,使用Task,FromResult要比Task.Run性能要好,因为Task.FromResult只是创建了一个包装已计算任务的任务,而Task.Run会将一个工作项在线程池进行排队,计算,返回.并且使用...或者处理某些数据,此类线程不建议使用Task.Run方法执行,因为Task.Run方法是将任务在线程池内进行排队执行,如果线程池线程进行长时间堵塞,会导致线程池增长,进而浪费性能,所以如果想要运行长时间的工作建议直接创建一个新线程进行工作...异步线程启动
2.调用线程调用Result或者Wait()进行阻塞
3.异步完成时,将一个延续代码调度到线程池,恢复等待该操作的代码
虽然看起来并没有什么关系,但是其实这里却是使用了两个线程来完成同步操作...UI线程调用
// Result和Wait()方法如果出现异常,异常将被包装为AggregateException进行抛出,
return Task.Run(() => RunAsync...,Stream和StreamWriter将使用同步的方式进行write/flush,这将会导致线程阻塞,并且有可能导致线程池内线程不足(线程池饥饿)
❌下面例子由于没有调用FlushAsync(),所以最后是以同步方式进行