取消长时间操作

Edd*_*die 3 c# multithreading backgroundworker cancellation

我有一个后台工作程序运行来复制一个巨大的文件(几GB),我想知道如何在副本中间取消该过程.我可以在复制之前检查CancellationPending属性,但在复制已经进行时不知道如何进行.

if (worker.CancellationPending) // check cancellation before copy 
{   
    e.Cancel = true;
}
else
{    
    File.Copy("sourceFile", "destinationFile"); // need to cancel this
}
Run Code Online (Sandbox Code Playgroud)

请指教,谢谢!

Jac*_*ack 6

我不确定,但我认为这File.Copy是由CopyFilewinapi 的功能支持,不允许此功能.

你应该指出CopyFileEx,只要文件的一部分被复制,就允许回调方法.