我需要在 C# 中启动一个任务,所以我要创建一个操作对象。
private Action<int, int, int> action = (int p1, int p2, int p3) =>
{
// do some stuff with p1, p2 and p3.
};
但是,当我尝试从中创建任务时,我意识到 new Task
只能拿一个Action
或 Action<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/