2012-04-16 4 views
2

リスト内の各プログラムのスレッドを作成するループを作成しようとしていますが、以下のコードで周長を渡す際に "メソッド名が期待されました"c#マルチスレッドメソッド名が必要です

for (i = 0; i <= programs.Count; i++) 
{ 
    checkProcess check = new checkProcess(); 
    // check.isRunning(); 

    string filename = programs[i].Filename; 
    string filepath = programs[i].Filepath; 

    mWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath))); 

    mWorkerThread.Start(); 
} 

私は代議員を少し読みましたが、私の問題の文脈でそれらを動作させるように見えませんでした。どんな方向に向かうべきかについてどんな助力も大いに評価されるだろう。

+1

は、私がどのようにわからないあなたに真実を伝えるために、 ..lemmeはすばやく見ています。編集:それを得た! –

答えて

12

スレッドターゲットは、実行可能なものでなければならず、メソッドの結果ではありません。上記のあなたのケースでは

mWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath))); 

、あなたはcheck.IsRunning(...)戻り値ThreadStartの新しいインスタンスを作成してみてください。何が欲しいのはあなたの声明の中でmWorkerThread = new Thread(new ThreadStart(check.isRunning(filename, filepath)));check.isRunning

mWorkerThread = new Thread(() => check.isRunning(filename, filepath)); 
+0

素晴らしい作品:)ありがとうございました。 =>は何を正確に表していますか? –

+0

これは無名関数の定義です。 http://msdn.microsoft.com/en-us/library/bb397687.aspxの詳細情報 – Matten

+0

もう一度感謝します^^(ほとんど)期待通りに動作します:) –

2

のようなものであるスレッドの起動時に呼び出されるメソッドの名前です。もう一つは、期待

Thread t = new Thread(new ThreadStart(ThreadMethod)); 
t.Start("My Parameter"); 

// method that will be called 
    private void ThreadMethod(object parameter) 
    { 
     // parameter equals to "My Parameter" 
    } 

は..使用してラムダ式、あなたの方法をインラインに作る匿名デリゲートメソッドです:

Thread t = new Thread(new ThreadStart(()=>ThreadMethod(parmaValue))); 
    t.Start("My Parameter"); 

参考: ThreadStart with parameters

関連する問題