我试图推出在C#中的任务,既需要一个参数和返回值,但我似乎无法得到正确的语法。
这里是亲如我已经得到了:这里的,预计将返回一个int的任务。 我在我的拉姆达,我也呈现出它采用单个参数,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);
我得到的委托“System.Func”不拿1个参数的语法消息。
如何实现这两种东西任何帮助(参数传递和获取的值)从一个任务将是巨大的!
对于输入(状态)参数Task
只能是类型的object
,所以它实际上不是类型安全的。
上一般类型参数Task<T>
是的返回类型Task
。
最好的办法是使用封闭:
int i = 3;
Task<int> task1 = Task.Factory.StartNew( () => 2 * i );
o
为对象的状态,并在你的情况,是要传递的价值,或者3.您可以将其转换为int
。
Task<int> task = Task.Factory.StartNew<int>(o => {
return 2 * (int)o;
}, 3);
Console.WriteLine(task.Result); // prints 6
请参阅MSDN对文档TaskFactory 。 StartNew其中规定:
州
类型:System.Object
由函数代表可以使用包含数据的对象。
那里有Task<t>
您可以使用(看这里 ),T是当然的返回值。 作为参数的-你可以用乌尔变量annonymous委托范围内,所以如果你有int o
任务之外定义的,你可以在任务annonymous委托范围内使用。 你可以看到一个样本在这里