Простите мое невежество, но я с проблемами понимания отрывок MSDN для чтения содержимого файла асинхронноЧтение текстового файла асинхронно
https://msdn.microsoft.com/en-us/library/jj155757.aspx
string text = await ReadTextAsync(filePath);
...
private async Task<string> ReadTextAsync(string filePath)
{
using (FileStream sourceStream = new FileStream(filePath,
FileMode.Open, FileAccess.Read, FileShare.Read,
bufferSize: 4096, useAsync: true))
{
StringBuilder sb = new StringBuilder();
byte[] buffer = new byte[0x1000];
int numRead;
while ((numRead = await sourceStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
{
string text = Encoding.Unicode.GetString(buffer, 0, numRead);
sb.Append(text);
}
return sb.ToString();
}
}
Как что чтение асинхронно? Похоже, дождаться завершения ReadTextAsync
, чтобы вернуть содержимое. Если в этом методе вставлен Thread.Sleep
, он будет ждать завершения, и после вызова метода этот код не будет работать.
Это асинхронный из-за 'ожидания sourceStream.ReadAsync'. Обратите внимание, что асинхронный не означает, что вы не ждете, это означает, что вы не привязываете поток, пока вы ждете, если вы решите подождать. – juharr
Как вы на самом деле читаете содержимое содержимого асинхронно? Вы не можете вызвать этот метод и продолжить выполнение программы. – tic
* Этот * метод «ждет» ответа, но система потребления может свободно выполнять другие действия, пока эта задача завершается. '" Вы не можете вызвать этот метод и продолжить выполнение программы "' - вы, безусловно, можете, и это именно то, что делает система. Например, когда пользовательский интерфейс продолжает отображать и отвечать во время выполнения метода. Это приложение продолжает делать что-то. – David