我刚刚开始熟悉Task Parallel Library,并且遇到了一个琐碎的问题,无法找到明确的答案.
以下摘要与何时应该选择一个摘要之间有什么区别?
Task t = Task.Factory.StartNew(() => {
Result result = Utils.Calculate();
Utils.ProcessResults(result);
});
和
Task t = Task.Factory.StartNew(() => Utils.Calculate());
t.ContinueWith((x) => Utils.ProcessResults(x));
似乎第一种方法是可取的,因为它的开销较小,并且在这个简单的示例中,实际上使用ContinueWith并没有多大意义.
但是话又说回来,我已经看到第二种方法在某些场合可能被第一种替代使用……
解决方法:
使用延续模型,您可以在原始任务完成后为异步处理安排延续.这意味着线程可以潜在地拾取您的原始任务,对其进行处理,拾取其他工作,对其进行处理,并且仅在以后的某个时刻拾取您的继续进行处理.
没有继续,您可以确保处理线程将在任务完成之前执行这两个语句.
我承认我对这些方案的经验有限,但是使用延续性时有两个原因让我想到:
>您正在安排要(可能)在继续之前处理的其他工作.
>您需要一种方法来提醒调用线程第一条语句已完成(即,更新了一部分UI),但并不在乎第二条语句已完成.
标签:task-parallel-library,c,net
来源: https://codeday.me/bug/20191121/2055719.html