Я нашел пример для асинхронной загрузки ftp на msdn, который выполняет следующее (фрагмент):
// 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();
То, что я не понимаю здесь, это то, какой смысл делает асинхронный ввод-вывод, если поток все равно заблокирован с явной ручкой ожидания. Я всегда думал, что преимущество асинхронного ввода-вывода состоит в том, что пользователь / программа не должен ждать.