private string status = "Waiting for command";
private void sendme(data1.dat2)
{
try
{
tst1 = true;
timeRemaining = int.Parse(time);
System.Threading.Thread dThread = new System.Threading.Thread(new System.Threading.ThreadStart(countDown));
dThread.IsBackground = true;
dThread.Start();
}
catch
{
bAttacking = false;
MessageBox.Show("Connection error");
}
private void displayStatus()
{
for (; ; System.Threading.Thread.Sleep(1000))
{
label7.Text = status;
}
}
private void countDown()
{
for (; ; System.Threading.Thread.Sleep(1000))
{
try
{
if (tst1)
{
timeRemaining--;
status = string.Format("has {0} time remainging", timeRemaining);
if (timeRemaining <= 0)
{
tst1 = false;
break;
}
}
}
catch
{
}
}
这按钮点击后进行tst1的时间,并开始倒数计时,到时候点击按钮后,窗口出现假死了,求怎么解决
看不懂这代码```
就是点击一个按钮,进行下载数据,并在lable中显示现在所需时间的到计时,但是点击下载后,就会出现窗口假死
用 BackgroundWork 替代你的 Thread
displayStatus这个方法在哪儿调用的?
System.Threading.Thread dThread = new System.Threading.Thread(new System.Threading.ThreadStart(displayStatus));
dThread.IsBackground = true;
dThread.Start();
@zerofeng: 你直接用个Timer算了。
代码没完整吧 displayStatus thread 你的代码是countDown 还有 复制代码 有格式 这样看起来舒服些
线程 应该不会卡的 如果卡 更新ui线程的 控件 可以用invoke 赋值
private void displayStatus()
{
for (; ; System.Threading.Thread.Sleep(1000))
{
label7.Text = status;
}
}
这个你执行不出错误提示?按你说的,对label7的访问将不在界面线程,VS肯定会出错误提示的,