当前位置: 首页> 教育> 高考 > 深圳市建设集团有限公司详细地址_手机开网店0元加盟店_产品推广渠道_广告联盟平台排名

深圳市建设集团有限公司详细地址_手机开网店0元加盟店_产品推广渠道_广告联盟平台排名

时间:2025/7/9 22:22:39来源:https://blog.csdn.net/henreash/article/details/145059524 浏览次数:0次
深圳市建设集团有限公司详细地址_手机开网店0元加盟店_产品推广渠道_广告联盟平台排名

优先使用Task.Run,除非有定制化需求才用Task.Factory.StartNew

Task.Factory.StartNew的TaskScheduler参数颠覆你的认知:

            var cnt = 0;var cancelToken = new CancellationTokenSource();await Task.Factory.StartNew(() => {cnt++;Debug.WriteLine($"Thread.CurrentThread.ManagedThreadId1={Thread.CurrentThread.ManagedThreadId}");}, cancelToken.Token, TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext()/*TaskScheduler.Default*/).ContinueWith((t) => {Debug.WriteLine($"Thread.CurrentThread.ManagedThreadId2={Thread.CurrentThread.ManagedThreadId}  {t.AsyncState}  {cnt}");}, /*TaskScheduler.Default*/TaskScheduler.FromCurrentSynchronizationContext());Debug.WriteLine("task finished");

Thread.CurrentThread.ManagedThreadId1=1
Thread.CurrentThread.ManagedThreadId2=1    1
task finished

如果给Task.Factory.StartNew函数传递TaskScheduler.FromCurrentSynchronizationContext()参数,则在主线程上执行;

TaskScheduler的三个全局静态成员:

Default:Task在线程池中执行

Current:使用启用任务的任务调度方式(如启动任务的任务调度在主线程执行,新的任务也在主线程执行)

FromCurrentSynchronizationContext():主线程中执行

注意:Task.Run和async、await两个关键字兼容,内部也是调用Task.Factory.StartNew实现的;可以看作是微软针对异步操作做了增强的版本。

关键字:深圳市建设集团有限公司详细地址_手机开网店0元加盟店_产品推广渠道_广告联盟平台排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: