我有一个非常基本的 Windows 窗体应用程序,使用 C# 工作,我正在尝试使用Background Worker。我大部分时间都遵循该页面上的基本代码。
void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar.Value = e.ProgressPercentage;
}
一切都很好,除非后台工作人员在运行时关闭窗口(例如点击 X)时正在工作。上面的方法抛出了一个空引用异常(我假设在progressBar上?)。
我确实把它放在了关闭方法上:
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
if(bgWorker.WorkerSupportsCancellation == true)
bgWorker.CancelAsync();
}
但是,这并没有解决问题。我想知道为什么会发生这种情况,我知道它与 隔离progressBar
,因为如果我删除该行,当我在忙时关闭窗口时不会引发异常。