2012-10-14 60 views
9

我开始使用.NET4.5进行异步并等待。所有的例子似乎使用以下方法来模拟长期操作:使用异步并等待System.Threading.Thread.Sleep

await Task.Delay(3000); 

现在我的长期计算是真的类似于:

System.Threading.Thread.Sleep(3000) 

例如:

for(i=0;i<1000000000;i++) 
    i=i*2; 

怎么办我使用异步工作并等待?现在看来,我可以'只'使用webrequests,WCF等方法......以这个伟大的新方法。

我错在哪里?

+0

你所说的“我的长期计算是真的类似于'Thread.Sleep'”的意思是这是毫无意义?我不会想象他们真的*睡着了。 –

+0

不,我的意思是,他们阻止,像for循环?我基本上试图实现的是等待一段漫长的循环。 – Enrico

+0

可能最好说使用.Sleep(3000)函数可以近似计算持续时间,而不是说你的计算和真的很相似? – HansLindgren

回答

17
await Task.Run(() => Thread.Sleep(10000)) 

会的工作,但

+0

是的,但它正是我所需要的。我可以用阻塞函数替换Thread.Sleep并且它可以工作!谢谢,看起来像一个愚蠢的问题,但它可以帮助我。 – Enrico

+1

你说这是毫无意义的,这不会帮助我通常会阻止的异步函数。如果你这样做,你的线可以去做,并做其他工作。即时通讯专门与在IIS内运行。 – Zapnologica