///////////////以下为楼主某个事件响应函数的代码
private void Button_Click_4(object sender, RoutedEventArgs e)
{
//turning
int isornotsuccess = 0;
Task.Delay(50000);
ImformationText.Text = null;
ImformationText.Text += String.Format("\r\nwe have released if you input the wave-number,or release 100-band if you not. . . .\r\n");
ThreadPool.QueueUserWorkItem((object o) =>//这后面一长串是一个语句,一个线程
{
myout.Result = " calling the function....";
Task.Delay(200000);
int bandnum = 0;
if (Convert.ToInt32(myout.Waveband) < 128 && Convert.ToInt32(myout.Waveband)>= 0)
{
bandnum=Convert.ToInt32(myout.Waveband);
}
else
{
bandnum = 100;
}
isornotsuccess = MyTurnImageDll.MyTurnImage(exportpath, importpath, bandnum);
if (isornotsuccess == 1)
{
myout.Result = "turnning success";
}
});
}
////////////////问题
调试的时候,完全没有延迟的效果,两个Delay都没有发挥作用。。。怎么回事?
------解决思路----------------------
延迟n秒钟执行,用定时器。如果c#很难学的话,就学javascript。至少会在这个方面有一个正确的编程方式。
------解决思路----------------------
Task.Delay(200000);本身并不延迟当前的执行。
它只是创建了一个任务,并马上返回。所以你看不到延迟。
Task.Delay具体见:https://msdn.microsoft.com/zh-cn/library/hh194873%28v=vs.110%29.aspx
你能用Task.Delay说明你用dotnet4.5,因此你可以用async await模式来简化代码:
private async void Button_Click(object sender, RoutedEventArgs e)
{
textBlock1.Text = "hello";
await Task.Delay(2000);
textBlock1.Text = "world";
}
------解决思路----------------------
Task.Delay
不是Thread.Sleep的概念,是延迟创建任务,不是任务执行过程中停歇