は、グローバル変数をパラメータとして唯一の方法として使用していますか、それを行うにはより流行の方法がありますか?C#スレッド化、スレッドをパラメタでメソッドを実行するには?
答えて
ParameterizedThreadStartを使用すると、パラメータ付きスレッドを開始できます。
例:
Thread newThread = new Thread(myObj.DoMethod);
newThread.Start(parameter);
私は通常、ラムダ
Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3));
newThread.Start();
ParameterizedThreadStartがパラメータとして単一object
を取るので、これはより便利にすることができますを使用して終了、けれども。これはめったに私が望むものではありません。
()=>そのマクロは何ですか? (javaからそれを知らない) –
'=>'表記は[ラムダ式。](http://msdn.microsoft.com/en-us/library/bb397687.aspx)匿名関数を書くための簡単な方法です。 –
あなたはちょうどそのパラメータを使用してメソッドを呼び出す単純なAction<T>
を使用してクロージャを使用することができます。root46として
var thread = new Thread(() =>
{
CallSomeMethod(someParam);
});
はすでに答え、スレッドを直接操作することは、その後ParameterizedThreadStartを使用している場合。また、.NET 4以上で作業している場合は、TaskとTask Parallel Libraryもご覧ください。
これは、メソッドが単一の引数しか取ることができず、複数のデータがある場合、必要な引数のそれぞれについてプロパティを持つ新しいクラスを作成するそのクラスのインスタンスを渡します。 (これは、イベントハンドリングに関連するオブジェクトのEventArgs
で行われたものです)。
lambdaからのクロージャを使用すると、他の人によるように、より滑らかで簡単な方法実際には便利です。
- 1. スレッドIDを指定して特定のスレッドでメソッドを実行
- 2. C++ラムダ式スレッドのスレッド化
- 3. ジョブ/スレッド作成でメソッドを実行するには?
- 4. あるスレッドから他のスレッドで実行するメソッドを呼び出す
- 5. Windowsのスレッド(実行時にC、pthreadsを、STD ::スレッド)
- 6. 複数のスレッドで実行されているメソッドのスケールパフォーマンスC#
- 7. C#、別のスレッドでイベントハンドラを実行
- 8. C#他のスレッドでコードを実行
- 9. スレッドが完了した後でスレッドのrun()メソッドを実行する
- 10. 2回実行するC#スレッド/クエリ
- 11. スレッドの外側から実行中のスレッドでメソッドを呼び出す
- 12. バックグラウンドでint戻り値を持つメソッドを実行するスレッド
- 13. スレッド#実行とスレッド#ウェイクアップの違いは?
- 14. C++スレッド間通信でスレッドを実装する
- 15. Objective-Cのスレッド化
- 16. C#スレッド化パークドCPU?
- 17. Windowsサービスでスレッドを使用して非同期にC#メソッドを実行
- 18. スレッドの停止とメソッドの実行
- 19. C++でスレッドを共有するスレッド
- 20. 他のスレッドのメインスレッドでメソッドを実行する
- 21. 別のスレッドでQT MainWindowメソッドを実行する
- 22. スレッドを使用して非同期にC#メソッドを実行します
- 23. 待機スレッドでスレッド2を実行して通知する
- 24. スレッド上でEventHandlerを実行
- 25. CPUコア/スレッドの数に一致する複数のスレッドを実行すると、各スレッドは別のコア/スレッド上で実行されますか?
- 26. スレッドの実行
- 27. スレッド実行タイミング
- 28. 終端実行中のスレッドのC++のstd ::スレッド
- 29. 別のスレッドからメインスレッドでメソッドを実行できますか?
- 30. Javaのスレッド内でスレッドを実行できますか?
グローバル変数をスレッドのパラメータとして使用することは、おそらくこれを行う最悪の単一の方法です。 – millimoose