void,所以在调用此方法时无法捕捉异常,使得进程崩溃
throw new Exception("异常了");
await Task.Run(() => { });
}
应该将异步函数返回...void
2.对于预计算或者简单计算的函数建议使用Task.FromResult代替Task.Run
对于一些预先知道的结果或者只是一个简单的计算函数,使用Task,FromResult要比Task.Run...程序中(例如WinForm)调用Result或wait()并不会死锁(虽然并不建议这么干)
对于预计算或普通计算的函数不应该这么写
public async Task RunAsync()...CancellationToken,所以如果想取消所有调用的异步函数,那么应该将CancllationToken传递给此调用链中的所有函数
下面例子在调用ReadAsync时并没有传递CancellationToken...,ConcurrentDictionary是一个很好的集合,而GetOrAdd也是一个很方便的方法,它用于尝试获取已经存在的项,如果没有则添加项.因为回调是同步的,所以很容易编写Task.Result的代码