4

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

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

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

你有什么想法我可以创建这个任务对象并让我传递参数吗?

4

2 回答 2

5

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

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 不知道你想传入什么。

于 2012-11-15T11:06:49.833 回答
-2

为您的参数创建一个类作为 DTO 怎么样?


public class ParamDto
{
   public string Param1;
   .
   .
   .
}
于 2012-11-15T11:06:00.413 回答