わかりました、私は使用しています: C# と Windows フォーム
私はバックグラウンドワークを持っています。ここで、キャンセル ボタンを作成したいと思いましたが、キャンセルするように指示し、バックグラウンドワークがそれを受け入れても、トリガーする実行可能ファイルを実行し続けます。
次のコードでキャンセルボタンがあります
private void cancelBackup_Click(object sender, EventArgs e)
{
backgroundWorker1.CancelAsync();
displayResults.Text = "Operation Cancelled";
}
バックグラウンド ワーカーのコードは次のとおりです。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
String invoer = comboboxDriveLetter.Text;
invoer = invoer.Remove(2);
ProcessStartInfo pStartInfo = new ProcessStartInfo("C:\\windows\\system32\\wbadmin.exe", " START BACKUP -backuptarget:" + invoer + " -include:c: -AllCritical -quiet");
pStartInfo.CreateNoWindow = true;
pStartInfo.UseShellExecute = false;
pStartInfo.RedirectStandardInput = true;
pStartInfo.RedirectStandardOutput = true;
pStartInfo.RedirectStandardError = true;
Process process1 = new Process();
process1.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process1.ErrorDataReceived += new DataReceivedEventHandler(ErrorHandler);
pStartInfo.Verb = "runas";
process1.StartInfo = pStartInfo;
process1.SynchronizingObject = displayResults;
process1.Start();
process1.BeginOutputReadLine();
process1.WaitForExit();
}
ボタンをクリックしてキャンセルすると、アクションは実行されますが、リッチテキストボックスにすべてが表示されるため、バックアップは続行されます
操作がキャンセルされましたバックアップに指定された
ボリュームのシャドウ コピーを作成しています... バックアップに指定された
ボリュームのシャドウ コピーを作成しています... バックアップに指定されたボリュームのシャドウ コピーを作成しています... バックアップに指定されたボリューム
のシャドウ コピーを作成しています...
ボリューム SYSTEM (1.99 GB) のバックアップが正常に完了しました。
ボリューム OS(C:) のバックアップを作成しています。コピー済み (0%)。
ボリューム OS(C:) のバックアップを作成しています。コピー済み (0%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (8%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (55%)。
ボリューム OS(C:) のバックアップを作成し、コピーしました (82%)。
ボリューム OS(C:) のバックアップが正常に完了しました。
バックアップ操作は正常に完了しました。
バックアップ操作の概要:
------------------
ボリューム SYSTEM (1.99 GB) のバックアップが正常に完了しました。
ボリューム OS(C:) のバックアップが正常に完了しました。
私は何を間違っていますか?