我有一个应用程序,它有几种需要很长时间才能完成的方法。我正在使用后台工作人员来运行这些方法并保持我的 UI 响应。我的方法看起来像
public void DoSomething()
{
while( HaveMoreWork )
{
// do work
}
}
现在我希望 UI 能够随时取消它,所以我改变了我的方法来像这样使用 Backgroundworker
public void DoSomething(Backgroundworker worker)
{
while( HaveMoreWork && !worker.CancelationPending )
{
// do work
}
}
我的问题是,有没有更好的方法来做到这一点。似乎将 Backgroundwoker 作为参数传递给所有这些方法有点混乱。对此的最佳做法是什么?