2012-03-16 15 views
0

私はBackgroundWorkerを使ってリストからファイルを再生するアプリケーションを持っています。停止ボタンを押すと、実行中のファイルは停止しますが、リスト内の次のファイルは再生されません。BackgroundWorkerを停止してすべてのループを終了する方法

playCount - 実行したファイル数numberOfLoops - 実行するループの量、ループはリストボックス内のすべてのファイル(listBoxFiles)、およびmyClass.playCapture - 何を実行するかバックグラウンドで実行されます。私はあなたを信じて

while (playCount < numberOfLoops && bContinuePlay && ifContinue) //play the file 
{ 
    for (int i = 0; (i < listBoxFiles.Items.Count) && bContinuePlay && ifContinue; i++) 
    { 
     string path = (string)listBoxFiles.Items[i]; 
     myClass = new myClass(path, playSpeed); 
     myClass.evePacketProgress += new myClass.dlgPacketProgress(
      (progressCount) => 
      { 
       myClass._fileSelectedIndex = i; 
       bgWoSingle.ReportProgress(progressCount, myClass); 
      }); 

     if (selectedAdapter != null) 
     { 
      bContinuePlay = myClass.playCapture(selectedAdapter._packetDevice); //here the BackgroundWorker running 
     } 
    } 

    playCount++; 
} 

答えて

1

はちょうどあなたが多分あなたのストップコードでfalseにbContinuePlayまたはifContinueを設定するのを忘れようCancelAsync Method

0

が見える使用する必要があります。そうでない場合は、さらにコードを入力してください。 (プロセスを開始して停止する場所)

+0

ifContinueは私の問題でした...ありがとうございました – user1269592

+0

私はまだあなたのコードのいくつかをクリーンアップする可能性があるので、私の答えからCancelAsyncメソッドを調べることをお勧めします。 –

+0

CancelAsyncメソッドを呼び出すと、実行中のBackgroundWorkerが削除されますか?キャンセルする人の後に開くべき他の人はどうですか? – user1269592

関連する問題