通常,当我想在 C# 中取消 backgroundWorker 时,我会执行以下操作:
while (backgroundWorker1.IsBusy)
{
backgroundWorker1.CancelAsync();
autoResetEvent1.WaitOne(BGW_CANCEL_TIMEOUT);
}
在一个应用程序中,有许多 backgroundWorker。像这样使用辅助函数来取消 backgroundWorkers 是否有效?
CancelBackgroundWorker(BackgroundWorker bgw, AutoResetEvent are)
{
while (bgw.IsBusy)
{
bgw.CancelAsync();
are.WaitOne(BGW_CANCEL_TIMEOUT);
}
}
我担心的是,不是将有问题的对象传递给函数,而是制作了副本,从而违背了拥有该函数的目的。拥有该功能的主要目的是减少代码空间并使应用程序代码更具可读性/可维护性。