2011-09-20 9 views
2

this MSDN sampleを理解しようとしているが、私はこれらの行について困惑している:あなただけのタスクがとにかく完了するまでスレッドをブロックしようとしている場合たとえばちょうどEndを呼び出しているのなら、WaitOneを呼び出すのはなぜですか?ブロックしませんか?

IAsyncResult result = Dns.BeginGetHostEntry(args[0], null, null); 
Console.WriteLine("Processing request for information..."); 
// Wait until the operation completes. 
result.AsyncWaitHandle.WaitOne(); 
// The operation completed. Process the results. 
try 
{ 
    // Get the results. 
    IPHostEntry host = Dns.EndGetHostEntry(result); 

、なぜも、非同期プログラミングを使うのか?また、WaitOneと呼ぶのは何ですか?操作が完了するまでEnd機能は自動的にブロックされませんか?

こっちにかなり混乱し...

+0

これはそうではありません。http://msdn.microsoft.com/en-us/library/ms143989%28v=VS.100%29.aspx –

+0

Hans:どういう意味ですか? –

答えて

2

はい、EndGetHostEntryブロック操作が完了するまで。私は正直言って悪い例だと思われます。を試してみてください。操作が完了するまでは2つの異なる方法がありますが、同じ例に入れてみると混乱のようになります。

同様に、「ここでもっと仕事をしてください」というようなコメントが含まれていれば、それは確かに便利でした。

APIの理解がうまくいくように聞こえます。この例を無視するか、「ユーザーコンテンツ」セクションの一番下にメモを追加してすべてを説明してください。

+0

ありがとうJon Skeet!ちょっと、私の理解が良かったと思う。このすべてのものを取り除こうとしてここで一晩中質問をしている:p –

関連する問題