试图了解this MSDN sample,但我对这些问题感到困惑:
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 :(得分:2)
是的,EndGetHostEntry
会阻止操作完成。我怀疑这只是一个不好的例子,说实话 - 可能是尝试向您展示两种不同的等待方式,直到操作完成,但是通过将它们放在同一个例子中它只是增加了混乱。
同样,如果它包含了“//在这里做更多工作”或类似的评论,肯定会更有用。
听起来你对API的理解很好,你应该忽略这个例子 - 或者在“用户内容”部分的底部添加一个注释来提及所有这些。