首页 > Windows开发 > 详细

C# - Task

时间:2020-03-04 21:24:58      阅读:67      评论:0      收藏:0      [点我收藏+]

初识

//直接实例化:手动Start
var task1 = new Task(() => { ... });
task1.Start();
//工厂创建:直接执行
var task2 = Task.Factory.StartNew(() => { ... });

特点:任务控制,按序执行

问题总结

场景:预加载
页面加载或实现其他功能时,提前执行耗时操作,避免卡顿:参考

private Task<string> _getBigDataTask;
private void EarlierWork() {
    _getBigDataTask = CreateGetDataTask();//提前执行耗时操作    
}
private async Task<string> CreateGetDataTask() {
    return await Task.Run(() => {
        // 耗时操作
        return "Data";
    }).ConfigureAwait(false); 
}
private void DoSomething() {
    //init
    //获取之前提前执行的结果,若执行未结束,则异步等待执行完成,获取结果后再执行
    string data = _getStringDataTask.Result;
    //after work 
}

注意必须ConfigureAwait(false),否则死锁,详见:高铁直达

C# - Task

原文:https://www.cnblogs.com/wjcx-sqh/p/12412003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!