どのように値を返し、パラメータを取るタスクを実行できますか?オーバーロードされたメソッド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をFunc <DerivedFromT、object>からFuncにキャスト<T,object>
- 5. 式<Func <TypeIn、TypeOut1 >>から式<Func <TypeIn、TypeOut2 >>への変換
- 6. MoqフレームワークFunc <T,T>
- 7. のFuncと一覧<string>
- 8. System.Linq.Expressions.Expression <Func <TSource、TKey >>のTKeyとは何ですか?
- 9. "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>と呼ばれるクラスのオブジェクトを返す:コードで
- 10. Func <object、bool>のパラメータとしてFunc <T, bool>を使用する方法?
- 11. 式<Func<object>を辞書のキーとして使用
- 12. Task.Runにwhileループロジックを持たせることはできますか?これを行うための適切な方法があります</p> <pre><code>Task.Run(while(true) { doSomething() } </code></pre> <p>:
- 13. カプセル化アクション<T>およびFunc <T>?
- 14. ダイナミック式を作成する<Func<T,Y>>
- 15. 非スタティック式<Func<X>> 'this'へのアクセス
- 16. IQueryable <T>をExpression <Func <T, bool>>に変換する方法?
- 17. ライブラリ内のC#Func <>デリゲート
- 18. Func <string>による遅延トレースメッセージフォーマット?
- 19. funcを使用したオートファクトデリゲートファクトリ<>
- 20. 2つのExpression <Func <T, bool>>( "where句")とand /または
- 21. Task.Runを使用する方法(アクション<T>)
- 22. Func <>とデリゲートとラムダ式の違い
- 23. なぜ 'Func <IBase>'は 'Func <TGeneric> TGeneric:IBase'がコンパイルされないうちにコンパイルされますか?
- 24. なぜFunc <>と式<Func<>>は互換性がありますか?なぜ私の場合は1つ働くのですか?
- 25. キャッチは、私はいつも<code>func()</code><code>resolve</code>をしましょう、と私はに指示したい場合<code>yield func()</code>、<br> 後の戻り結果を決定する前に一品、</p> <p>によって<code>onError()</code>に直接、私は<code>func()</code><code>reject</code>からのエラーを保持したい約束
- 26. .ToListAsync()と.ToList()+ Task.Run
- 27. Cプリプロセッサ:この場合</p> <pre><code>void Func(int x) { printf("%d",x); } #define func Func x //or something int main() { func 10; //<---- remove parenthesis } </code></pre><p>、<code>func</code>は実関数を指します。私はそれがこのように振る舞うマクロを書き込むことができる場合に思っていた括弧
- 28. アクションはFunc <TResult>と同じですか?
- 29. Where()と継承で単一のFunc <T,bool>を使用
- 30. Func <T, TResult>とConverter <TInput、TOutput>の違いは何ですか? Funcとコンバーター代表団のための署名を見ると
このスレッドは安全ですか? – BVernon
@BVernon:後で 'text'の値を変更しないとすれば、それは私にはうまく見えます。 –
私はちょうど本当に基本的なものを忘れていると思います... DoSomethingをテキスト用に異なる値で複数回呼び出すと、各呼び出しのメモリに各バージョンのコピーが表示されます。 – BVernon