zav*_*kas 12 c# windows-runtime .net-4.5
如何运行返回值并获取参数的任务?我看到有一个重载方法,Task.Run<TResult>(Func<TResult>)但我如何在那里传递参数?
Jon*_*eet 27
Func<TResult>没有参数.通常,您将使用lambda表达式捕获参数.例如:
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
Run Code Online (Sandbox Code Playgroud)
这text是一个捕获的变量 ...所以即使你只是创建一个Func<int>,它也使用方法参数.
您可以使用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!" } } );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14067 次 |
| 最近记录: |