如果你刚刚在打结束电话,为什么要打WaitOne ?不't结束块

本文关键字:WaitOne 结束块 为什么 结束 电话 如果 | 更新日期: 2023-09-27 18:09:09

试图理解这个MSDN示例,但我对这些行感到困惑:

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函数不会自动阻塞直到操作完成吗?

这里有点乱

如果你刚刚在打结束电话,为什么要打WaitOne ?不't结束块

是,EndGetHostEntry阻塞直到操作完成。我怀疑这只是一个不好的例子,说实话——可能是试图向您展示两种不同的等待方式,直到操作完成,但是将它们放在同一个例子中只会增加混乱。

同样,如果它包含了"//do more work here"之类的注释,肯定会更有用。

听起来你对API的理解很好,你可能应该忽略这个例子——或者在"用户内容"部分的底部添加一个注释来提及所有这些。