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