2012-10-14 23 views
9

私はasync用に.NET4.5を使い始めました。asyncとawaitをSystem.Threading.Thread.Sleepで使用する

await Task.Delay(3000); 

今私の長期的な計算は本当に似ています:例えば

System.Threading.Thread.Sleep(3000) 

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

するにはどうすればよいのすべての例では、長期的な動作をシミュレートするために、次を使用しているように見えます私は非同期でこの作業を行い、待っていますか?今では、私はこの偉大な新しい方法で、WebRequest、WCFなどのメソッドを使用することしかできないようです。

ここでポイントがありませんか?

+0

むしろ無意味だあなたは、「私の長期的な計算は 'Thread.Sleep'には本当に似ている」とはどういう意味ですか?私は彼らが本当に眠っているとは思わないでしょう。 –

+0

いいえ、彼らはforループのようにブロックしていますか?私が基本的に達成しようとしているのは、長いforループを待つことです。 – Enrico

+0

おそらく、あなたの計算が本当に似ていると言っているのではなく、.Sleep(3000)関数を使って持続時間を近似することができます。 – HansLindgren

答えて

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

は動作しますが、それは

+0

はい、それは私が必要としていたものです。 Thread.Sleepをブロッキング関数で置き換えることができます。ありがとう、愚かな質問のように見えるが、それは私を助ける。 – Enrico

+1

あなたはそれが無意味だと言いますが、これは通常はブロックされている非同期関数では役に立ちません。もしあなたがこのようなことをやめれば、あなたのスレッドは外に出て他の仕事をすることができます。私は特にIISの内部での実行について話しています。 – Zapnologica

関連する問題