ホームページ >バックエンド開発 >C++ >C# で ThreadStart メソッドにパラメータを渡すにはどうすればよいですか?

C# で ThreadStart メソッドにパラメータを渡すにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-07 08:02:10634ブラウズ

How Can I Pass Parameters to a ThreadStart Method in C#?

C# で ThreadStart メソッドにパラメーターを渡す

C# では、ThreadStart メソッドはスレッドの実行動作を定義するデリゲートです。ただし、このメソッドにパラメータを渡すと課題が生じる可能性があります。

たとえば、「download」メソッドにパラメータを渡そうとする次のコードを考えてみましょう。

public void download(string filename)
{
    // download code
}

Thread thread = new Thread(new ThreadStart(download(filename));

このコードは、 「メソッド タイプが必要です」エラーが発生します。パラメータを効果的に渡すには、次のアプローチを検討してください:

匿名ラムダ式の使用:

最も簡単な解決策は、ThreadStart コンストラクターで直接匿名ラムダ式を使用することです:

string filename = ...
Thread thread = new Thread(() => download(filename));
thread.Start();

このアプローチでは、複数のパラメーターを渡すことができ、キャストを必要とせずにコンパイル時のチェックを行うことができます。 from "object."

Using ParameterizedThreadStart:

代わりに、次のように定義された ParameterizedThreadStart デリゲートを使用することもできます:

public delegate void ParameterizedThreadStart(object obj);

これにより、単一のオブジェクトパラメータをスレッド:

ParameterizedThreadStart threadStart = new ParameterizedThreadStart(download);
Thread thread = new Thread(threadStart);
thread.Start(filename);

複数のパラメーターの受け渡し:

複数のパラメーターを渡す必要があるシナリオでは、カスタムのデリゲート型や、クロージャーを介して変数をキャプチャするなどの手法を使用できます。 。ただし、一般的には、その単純さと利便性のため、匿名ラムダ式アプローチが好まれます。

以上がC# で ThreadStart メソッドにパラメータを渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。