2012-05-07 6 views

答えて

4

ParameterizedThreadStartを使用すると、パラメータ付きスレッドを開始できます。

例:

Thread newThread = new Thread(myObj.DoMethod); 
newThread.Start(parameter); 

私は通常、ラムダ

Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3)); 
newThread.Start(); 

ParameterizedThreadStartがパラメータとして単一objectを取るので、これはより便利にすることができますを使用して終了、けれども。これはめったに私が望むものではありません。

+0

()=>そのマクロは何ですか? (javaからそれを知らない) –

+0

'=>'表記は[ラムダ式。](http://msdn.microsoft.com/en-us/library/bb397687.aspx)匿名関数を書くための簡単な方法です。 –

2

あなたはちょうどそのパラメータを使用してメソッドを呼び出す単純なAction<T>を使用してクロージャを使用することができます。root46として

var thread = new Thread(() => 
{ 
    CallSomeMethod(someParam); 
}); 
0

これは、メソッドが単一の引数しか取ることができず、複数のデータがある場合、必要な引数のそれぞれについてプロパティを持つ新しいクラスを作成するそのクラスのインスタンスを渡します。 (これは、イベントハンドリングに関連するオブジェクトのEventArgsで行われたものです)。

lambdaからのクロージャを使用すると、他の人によるように、より滑らかで簡単な方法実際には便利です。

関連する問題