我想调用TextReader
的异步读取器方法,但总是遇到编译错误:
var buffer = new char[10];
TextReader reader = new StreamReader(@"D:\temp\abc.txt");
// the following statement will get compile error
var readCount = await reader.ReadBlockAsync(buffer, 0, buffer.Length);
这是错误:
'await'运算符只能在异步方法中使用。 考虑使用'async'修饰符标记此方法并将其返回类型更改为'Task'。
使用ReadBlockAsync
的正确方法是什么?
答案 0 :(得分:0)
您只需要使用其他人提到的async
标识符标记该方法。然后,该方法需要返回Task
,Task<T>
或void
。但是,void
返回异步方法是为异步事件处理程序保留的。因此,在您的情况下,您可能想要返回Task<string>
public async Task<string> ReadAsync()
{
var buffer = new char[10];
TextReader reader = new StreamReader(@"D:\temp\abc.txt");
var readCount = await reader.ReadBlockAsync(buffer, 0, buffer.Length);
return new string(buffer.Take(readCount).ToArray());
}
您可能会发现以下资源非常有用:Best practices with Async/Await,Asynchronous Programming with Async-Await