异步操作时需要注意的要点
1.使用异步方法返回值应当避免使用void
在使用异步方法中最好不要使用void当做返回值,无返回值也应使用Task作为返回值,因为使用void作为返回值具有以下缺点
无法得知异步函数的状态机在什么时候执行完毕...1.异步线程启动
2.调用线程调用Result或者Wait()进行阻塞
3.异步完成时,将一个延续代码调度到线程池,恢复等待该操作的代码
虽然看起来并没有什么关系,但是其实这里却是使用了两个线程来完成同步操作...,导致进程永久堵塞,
使用Task.Result和Task.Wait()会在winform和ASP.NET中会死锁,因为它们SynchronizationContext具有对象,两个线程在SynchronizationContext...,timer)
在异步编程时出现了一种模式cancelling an uncancellable operation,这个用于取消像CancellationTokenRegistry和timer这样的东西...注意场景
缓存异步结果是一种很常见的做法,ConcurrentDictionary是一个很好的集合,而GetOrAdd也是一个很方便的方法,它用于尝试获取已经存在的项,如果没有则添加项.因为回调是同步的