关于异步/任务的初学者

Wra*_*ino 4 c# asynchronous

看看这段代码:

private async void Lista()
{
    var _folder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var file = await _folder.GetFileAsync("thefile.txt");
    var read = await Windows.Storage.FileIO.ReadTextAsync(file);
}
Run Code Online (Sandbox Code Playgroud)

由于await我需要async在签名中使用代码块.这意味着我不能Retrun read在最后添加" ".(这是我想从该方法中获得的.)

根据我的理解,我需要以某种方式使用任务.有关如何检索的任何提示var read

Sel*_*enç 5

您可以将返回类型更改为 Task<string>

private async Task<string> Lista()
{
     var _folder = Windows.Storage.ApplicationData.Current.LocalFolder;
     var file = await _folder.GetFileAsync("thefile.txt");
     var read = await Windows.Storage.FileIO.ReadTextAsync(file);
     return read;
}
Run Code Online (Sandbox Code Playgroud)

来自MSDN

异步方法可以具有返回类型Task,Task<TResult>void.[...]如果Task<TResult>方法的return语句指定了TResult类型的操作数,则指定async方法的返回类型.如果方法完成时没有返回有意义的值,则使用Task.也就是说,对该方法的调用返回一个Task,但是当Task完成时,任何等待Task的await表达式都会返回void.