【发布时间】:2012-10-29 19:25:21
【问题描述】:
如何运行返回值并接受参数的任务?我看到有一个重载方法Task.Run<TResult>(Func<TResult>),但是我如何在那里传递参数?
【问题讨论】:
标签: c# windows-runtime .net-4.5
如何运行返回值并接受参数的任务?我看到有一个重载方法Task.Run<TResult>(Func<TResult>),但是我如何在那里传递参数?
【问题讨论】:
标签: c# windows-runtime .net-4.5
Func<TResult> 不带参数。通常,您会捕获 使用 lambda 表达式代替的参数。例如:
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
这里text 是一个捕获的变量...所以即使您只是创建一个Func<int>,它使用方法参数。
【讨论】:
text 的值,我觉得这很好。
text 值。
您可以使用 Task.Factory.StartNew() 重载来传递一个“状态”对象,该对象包含您想要使用的所有参数。这是一个传入 NameValueCollection 的非常基本的示例,但您显然可以传入任何类型的对象。
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!" } } );
【讨论】: