どのように値を返し、パラメータを取るタスクを実行できますか?オーバーロードされたメソッドTask.Run<TResult>(Func<TResult>)
があることがわかりますが、そこにどのようにパラメータを渡すことができますか?Task.RunとFunc <>
11
A
答えて
27
Func<TResult>
はパラメータをとりません。通常は、ラムダ式を使用してパラメータをキャプチャします。たとえば:
public void DoSomething(string text)
{
Task<int> task = Task.Run(() => text.Length);
...
}
ここtext
はあなただけFunc<int>
を作成しているので、にもかかわらず...変数キャプチャあり、それはメソッドのパラメータを使用してです。
6
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!" } });
関連する問題
- 1. Lambda Func <>とFluent
- 2. buidの表現式<Func<T,bool>>式<Func<T>より
- 3. Func <T, String>をFuncに変換する<T, bool>
- 4. Func <Owned<T>> vs Func 依存性
- 5. メンバーアクセスfuncをFunc <DerivedFromT、object>からFuncにキャスト<T,object>
- 6. Expression <Func <T, bool>>
- 7. EF6 - List <Func <T, object>>
- 8. (Func <IInterface>)と(Func <タスク<IInterface>>)のあいまいな呼び出し
- 9. 式<Func <TypeIn、TypeOut1 >>から式<Func <TypeIn、TypeOut2 >>への変換
- 10. 式<Func<T, U>>を式<Func <オブジェクト、オブジェクト>>に変換します。
- 11. のFuncと一覧<string>
- 12. タスク<T>とFuncデリゲートのタスク
- 13. Halide :: GeneratorInput <Halide :: Func>
- 14. Autofac Func <T> with InstancePerMatchingLifetimeScope
- 15. MoqフレームワークFunc <T,T>
- 16. System.Linq.Expressions.Expression <Func <TSource、TKey >>のTKeyとは何ですか?
- 17. .net汎用メソッドIterable <T>と式<Func<T, T>>
- 18. Func <TSource、bool>述語をFuncに変換<TDest, bool>述語
- 19. Func <TSource、int>とintを比較して式<Func <TSource、bool>を作成する方法
- 20. パッケージ私が見て</p> <pre><code>package main </code></pre> <p>を開始して実験し</p> <pre><code>func main() </code></pre> <p>を持ってきた「メイン」とFUNC「メイン」
- 21. "class_name obj_name = func()"を "class_name obj_name {func()}"に置き換えることが理にかなっていますか?</p> <pre><code>const class_name obj_name{func()}; </code></pre><p>FUNC()<code>class_name</code>と呼ばれるクラスのオブジェクトを返す:コードで
- 22. Func <object、bool>のパラメータとしてFunc <T, bool>を使用する方法?
- 23. 式<Func<object>を辞書のキーとして使用
- 24. 式<Func <TSource、TResult >>セレクタwithパラメータ
- 25. 正確な式を持つMoq <Func <TEntity、bool >>
- 26. ダイナミック式を作成する<Func<T,Y>>
- 27. 式を作成します。式<Func <IMyclass、int >>
- 28. 非スタティック式<Func<X>> 'this'へのアクセス
- 29. Funcの結果を取得<タスク<IResponse>>タイムアウトチェック中
- 30. は<のFunc <T, TKey>>に関連した動的
このスレッドは安全ですか? – BVernon
@BVernon:後で 'text'の値を変更しないとすれば、それは私にはうまく見えます。 –
私はちょうど本当に基本的なものを忘れていると思います... DoSomethingをテキスト用に異なる値で複数回呼び出すと、各呼び出しのメモリに各バージョンのコピーが表示されます。 – BVernon