2011-09-20 45 views
2

试图了解this MSDN sample但我困惑的这些行:为什么要打电话给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块,直到操作完成。我怀疑这只是一个坏例子,说实话 - 可能是尝试向你展示了两种不同的等待操作完成的方式,但通过将它们放在同一个例子中,它只是增加了混淆。

同样,如果它包含了“//在这里做更多工作”或类似的评论,它肯定会更有用。

听起来您对API的理解很好,您应该忽略该示例 - 或者在“用户内容”部分的底部添加注释以提及所有这些。

+0

谢谢Jon Skeet!嘿,我希望我的理解很好。一直在这里问这里的问题试图让所有这些东西都下来:p –