我该如何运行一个带有参数并返回值的任务?我看到有一个重载方法
Task.Run<TResult>(Func<TResult>)
,但是如何将参数传递进去呢?Task.Run<TResult>(Func<TResult>)
,但是如何将参数传递进去呢?Func<TResult>
不接受参数。通常情况下,您可以使用lambda表达式来捕获参数。例如:
注:本翻译保留了原文中的HTML标签
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
在这里,text
是一个捕获变量...所以即使您只是创建一个Func<int>
,它也会使用方法参数。
Task<bool>.Factory.StartNew(
( a ) => {
NameValueCollection nvc = a as NameValueCollection;
if( nvc != null ) {
nvc.AllKeys.ForEach( k => Console.WriteLine( nvc[k] ) );
}
return true;
},
new NameValueCollection() { { "param1", "hithere!" } } );