我第一次研究 C# 中的任务功能。我正在研究它的原因是我需要控制我的应用程序需要做的一堆事情,并且我需要严格控制这些“任务”。确切地说,我需要知道给定任务何时以及是否完成,如果需要,我还需要能够取消重新定义任务的执行。
从我目前阅读的内容来看,如果我使用同步代码,我可以做到这一点。所以例如我有:
Task task = new Task(() =>
{
synchronousMethod();
});
task.Start();
这将按预期工作,所以我会知道这个任务什么时候完成,因为代码是同步执行的。于是任务开始,执行进入到synchronousMethod内容,运行到最后,返回Task代码,正在被标记为Complete。当此方法更改为异步方法时,问题就开始了。该方法正在不同的线程中运行,因此,即使任务可能被标记为已完成,异步方法也可能仍未完成。
更糟糕的是,当该异步方法将在内部运行具有异步调用的其他方法时,我也希望将其作为单个任务的一部分包含在内。
所以我的问题是,如果我可以在 Task 命名空间中实现我想要的控制级别。当然,我可以尝试输入将在某个点调用的某些回调,这将向我发出信号,任务达到某个点,但是如果这些任务数量很大,我需要知道哪个任务是哪个任务不会我感兴趣的优雅解决方案。
任何帮助/建议?