請原諒我的無知,但我有了解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
,那麼它將等待完成,並且在調用該方法之後將不會運行其他代碼。
它是異步的,因爲'await sourceStream.ReadAsync'。請注意,異步並不意味着您不會等待,這意味着如果您選擇等待,則在等待時不會佔用線程。 – juharr
如何實際讀取文件內容的全部內容?您無法調用該方法並繼續執行程序 – tic
*此方法「等待」響應,但消耗系統可以在此任務完成時自由地執行其他操作。 ''你不能調用這個方法並繼續執行程序'' - 你當然可以,而這正是系統的功能。例如,當UI在該方法執行時繼續呈現和響應。這是應用程序繼續做的事情。 – David