C#マルチスレッドのパラメータ転送

3978 ワード

C#マルチスレッドのパラメータ転送
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値も変更されます.