0
我正在使用Winforms C#.net應用程序。C#Winforms卡住並轉到「無響應」狀態
public partial class FormMain : Form
{
private bool cancelQueryWaitRequested = false;
public FormMain()
{
InitializeComponent();
}
private async void btnQueueStart_Click(object sender, EventArgs e)
{
QueryFinishedWait();
}
private int QueryFinishedWait()
{
int i = 1;
reQueueUIStart();
groupWaitQueue.Visible = true;
for (i = 0; i < 20; i++)
{
lblQueueWaitSeconds.Text = (20 - i).ToString();
Thread.Sleep(1000);
if (cancelQueryWaitRequested)
break;
}
groupWaitQueue.Visible = false;
reQueueUIStop();
return i;
}
}
當我執行此操作時,應用程序出現「未響應」,我可以看到處理器使用率變得非常高。
但是當我在btnQueueStart_Click
內運行相同的循環時,它工作正常。
我知道我做錯了什麼,還是不知道是什麼。
在此先感謝。
你不應該在循環中進行倒計時,並在每次迭代中睡一秒鐘。看看Timer類。 http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx – 2014-11-22 13:00:06
我正在使用Thread.Sleep進行演示,但我正在使用await Task.Delay( 1000);實際功能。你是對的! – Kush 2014-11-22 13:22:41