値を返し、パラメーターを受け取るタスクを実行するにはどうすればよいですか?オーバーロードされたメソッドTask.Run<TResult>(Func<TResult>)
があることがわかりますが、そこにパラメーターを渡すにはどうすればよいですか?
15538 次
2 に答える
29
Func<TResult>
パラメータを取りません。通常、代わりにラムダ式を使用してパラメーターをキャプチャします。例えば:
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
text
これがキャプチャされた変数です...したがって、作成しているだけでもFunc<int>
、メソッドパラメータを使用しています。
于 2012-10-29T19:26:47.117 に答える
7
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!" } } );
于 2012-10-29T19:49:22.187 に答える