C#マルチスレッドのパラメータ転送
3978 ワード
C#マルチスレッドのパラメータ転送
C#でスレッドを作成するのは便利で、Voidタイプの関数で、宣言するだけで自分のスレッドアプリケーションを作成することができます.次の例を見てください.
しかし、上記の例から、ThreadMethodメソッドはパラメータを入力できないという問題が見られます.この問題を解決するには、ParameterizedThreadStartが必要です.この例を見てください.
これによりスレッドの応答関数はパラメータを受信できます.ここでもう一つ注意すべき問題は,パラメータとして渡されたparameterであり,パラメータ記述にRefは付加されていないが,実際には伝達アドレスの参照である.したがって、ThreadMethodでparameterを変更するとします.ThreadControllerのvalue値も変更されます.
C#でスレッドを作成するのは便利で、Voidタイプの関数で、宣言するだけで自分のスレッドアプリケーションを作成することができます.次の例を見てください.
public
class
ThreadController
{
public
ThreadController()
{
System.Threading.Thread thread
=
new
System.Threading.Thread(ThreadMethod);
thread.Start();
}
private
void
ThreadMethod()
{
//
Do something
}
}
しかし、上記の例から、ThreadMethodメソッドはパラメータを入力できないという問題が見られます.この問題を解決するには、ParameterizedThreadStartが必要です.この例を見てください.
public
class
ThreadController
{
public
ThreadController()
{
int
value
=
10
;
System.Threading.Thread thread
=
new
System.Threading.Thread(
new
System.Threading.ParameterizedThreadStart(ThreadMethod));
thread.Start(value);
}
private
void
ThreadMethod(
object
parameter)
{
Console.WriteLine(parameter.ToString());
}
}
これによりスレッドの応答関数はパラメータを受信できます.ここでもう一つ注意すべき問題は,パラメータとして渡されたparameterであり,パラメータ記述にRefは付加されていないが,実際には伝達アドレスの参照である.したがって、ThreadMethodでparameterを変更するとします.ThreadControllerのvalue値も変更されます.