2

グローバル変数をパラメーターとして使用する唯一の方法ですか、それとももっとファッショナブルな方法がありますか?

4

4 に答える 4

4

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

例:

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

ただし、私は通常ラムダを使用することになります

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

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

于 2012-05-07T18:14:16.647 に答える
2

単純なものを使用してクロージャを使用し、Action<T>パラメータを使用してメソッドを呼び出すことができます。

var thread = new Thread(() =>
{
    CallSomeMethod(someParam);
});
于 2012-05-07T18:14:51.637 に答える
0

root46 が既に回答したように、スレッドを直接操作する場合はParameterizedThreadStartを使用します。ただし、.NET 4 以降を使用している場合は、 Task and Task Parallel Libraryもご覧ください。

于 2012-05-07T18:18:03.070 に答える
0

これを行うより言語に依存しない方法は、メソッドが単一の引数しかとることができず、複数のデータがある場合、必要な各引数のプロパティを持つ新しいクラスを作成し、インスタンスを渡すだけです。そのクラス。(これは、EventArgsイベント処理に関連するオブジェクトで実行されたものです。)

そうは言っても、他の人が言ったように、ラムダのクロージャーを使用することは、実際にはより便利になる傾向がある、かなり滑らかで簡単な方法です。

于 2012-05-07T18:26:55.960 に答える