私は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++;
}
ifContinueは私の問題でした...ありがとうございました – user1269592
私はまだあなたのコードのいくつかをクリーンアップする可能性があるので、私の答えからCancelAsyncメソッドを調べることをお勧めします。 –
CancelAsyncメソッドを呼び出すと、実行中のBackgroundWorkerが削除されますか?キャンセルする人の後に開くべき他の人はどうですか? – user1269592