Если вы не можете изменить expensiveMethod()
, то прямого способа обработки отмены не существует.
Если expensiveMethod()
работает с каким-то большим фрагментом данных, возможно, вы можете разделить эти данные и обработать меньший (не так долго) куски в цикле и после каждой итерации проверяют флаг отмены.Как то так:
//...
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
do
{
provideNextChunk();
expensiveMethod();
}
while (hasMoreData && !args.Cancel);
}