c# - 使用具有多个模板参数的 Action 启动任务

标签 c# multithreading templates task

我需要在 C# 中启动一个任务,所以我要创建一个操作对象。

private Action<int, int, int> action = (int p1, int p2, int p3) =>
{
    // do some stuff with p1, p2 and p3.
};

但是,当我尝试从中创建任务时,我意识到 new Task只能拿一个ActionAction<object>并拒绝接受我的 action带有多个模板化参数。

您是否知道如何创建此任务对象并让我传入参数?

最佳答案

只需使用 lambda 转换为正确的委托(delegate)类型:

Action<int, int, int> action = (int p1, int p2, int p3) =>
{
    // do some stuff with p1, p2 and p3.
};

//a closure can capture over any values you might want to pass in
Task.Run(() => action(1, 2, 3));

如果你想一想,你不能交一个Action<int, int, int>Task.Run因为您还必须提供参数。 Task.Run 无法知道您要传递的内容。

关于c# - 使用具有多个模板参数的 Action 启动任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13396074/

相关文章:

javascript - 如何停止 Razors 自动编码\n?

c# - 如何提取 order by 子句以便我可以使用逻辑来设置它?

java - Java 中具有并行化的链式过滤器

c++ - 如何通过 `friend` 将流运算符<<放在模板化类主体之外?

c++ - 为模板化内部类重载非成员运算符

python - Django,将HTML放入模板时自动出现HTML "sanitizing",如何停止?

c# - 如何在参数化查询中传递 guid?

c# - 将 DataGridView 内容复制到剪贴板

java - 为什么客户端线程只执行一次就销毁了? Java TCP 套接字

c# - C# 中线程的排队执行