c# - 调用长时间运行的方法并继续执行其他任务

标签 c# .net asynchronous async-await

public class PerformMainTask()
{
    Task1();
    Task2();
    PerformLongTask();
    Task3();
    Task4();
}

我想在这里实现的是将 PerformLongTask() 放到另一个线程上,并继续执行 Task3 和 Task4,即使 PerformLongTask() 仍在运行。

我的 PerformLongTask() 应该如何像 C# 5.0 方式一样?

我需要使用async/await吗?

最佳答案

我知道的最简单的解决方案是:

Task1();
Task2();
var task3 = Task.Run(() => PerformLongTask());
Task4();
Task5();
task3.Wait(); //if task3 has not started yet it will be inlined here

简单高效。如果您需要传播错误,您应该使用 Parallel.Invoke:

Parallel.Invoke(
 () => { PerformLongTask(); },
 () => { Task4(); Task5(); }
);

关于c# - 调用长时间运行的方法并继续执行其他任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720733/

相关文章:

c# - WinFORMS 中的 WPF 用户控件 : Project Structuring

c# - 在 TransactionScope 范围内打开新的数据库连接,而不加入事务

C# Access 报告打印代码错误

c# - 从 MS Access 应用程序迁移到 .Net 应用程序的优势

javascript - 为什么 node.js `fs.existsSync` 在用 promise 包装时不能正常工作?

c# - 下载文件的线程 C#

c# - 流畅的接口(interface) : Avoid Excessive Parameters On Generic Types

c# - WinForms:如何检查 C# 文本框中的最少字符数?

c# - 我可以将 Task.Run 包装在另一个 Task.Run() 下吗?

JavaScript:4 个异步函数在继续之前按顺序等待彼此完成?