好的,我正在使用: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();
}
当我单击按钮取消时,它会执行操作,但备份会继续进行,因为 Richtextbox 最终会显示整个内容
操作已取消
创建指定用于备份的卷的卷影副本...创建指定用于备份的卷
的卷影副本...创建指定用于备份的卷的卷影副本...
创建指定用于备份的卷的卷影副本...
卷 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:) 的备份已成功完成。
我究竟做错了什么?