我正在尝试在 C# 中启动一个既接受参数又返回值的任务,但我似乎无法获得正确的语法。
这是我所得到的最接近的结果:这是一个预计返回 int 的任务。我是我的 lambda,我还展示了它采用单个参数,o:
Task<int> task1 = Task.Factory.StartNew<int>((o) => { return 2 ; }, 3);
Console.WriteLine(task1.Result); // prints 2
上面的行有效(它返回一个硬编码值 2,但您可以看到它对参数 o 没有执行任何操作,使其毫无用处。如果我对参数 o 执行某些操作,如下所示:
Task<int> task1 = Task.Factory.StartNew<int>((o) => { return (2 * o) ; }, 3);
我收到一条语法消息,指出 Delegate 'System.Func' 不接受 1 个参数。
任何有关如何从任务中实现这两件事(传递参数和检索值)的帮助都会很棒!
最佳答案
Task
的输入(状态)参数只能是 object
类型,所以它实际上不是类型安全的。
Task<T>
上的泛型类型参数是 Task
的返回类型.
最好的选择是使用闭包:
int i = 3;
Task<int> task1 = Task.Factory.StartNew( () => 2 * i );
关于.net - 如何启动一个接受参数并返回值的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10920174/