我在msdn上找到了example异步ftp上传,它执行以下操作(摘录):
// Asynchronously get the stream for the file contents.
request.BeginGetRequestStream(
new AsyncCallback (EndGetStreamCallback),
state
);
// Block the current thread until all operations are complete.
waitObject.WaitOne();
我不明白的是,如果线程被明确的waithandle阻塞,那么异步IO会产生什么意义呢。我一直认为异步IO的优点是用户/程序不必须等待。
答案 0 :(得分:4)
这只是一个例子。
在Real World Application(TM)中,您的代码可能正在运行GUI线程。我们都知道,在用户体验方面,阻止GUI线程是一种杀手锏。
当异步操作完成时,它会在你的GUI中调用某种通知器,这允许用户在等待传输完成时做其他事情。
答案 1 :(得分:1)
这只能用于示例 - 使用最少的代码来显示它是如何完成的。
从上面的代码中得到的结果是主线程在等待操作结束时不使用任何CPU - 如果您使用GUI,这可能是合乎逻辑的。
答案 2 :(得分:1)
是的,它没有多大意义。我假设这个例子的目的是演示异步调用它的语法,但是你是对的,如果你只是要阻止,你首先要打败异步调用的点。