C#取消长时间运行的任务,而不是循环

时间:2012-02-22 07:17:10

标签: c# multithreading task

我是c#task的新手,我想做的就是转换

        downloadThread = new Thread(DownLoadFile); 
        downloadThread.Start();

执行任务

  

var t = Task.Factory.StartNew(DownLoadFile);

我也知道使用CancellationTokenSource来取消。但是我看到的例子都是长循环运行的线程,比如for,fore,while,并检查IsCancellationRequested来取消循环中的任务。

  

if(ct.IsCancellationRequested)                   {                       打破;                   }

但我的长期任务是从ftp下载文件,GetFile来自第三方dll。

            ftp.GetFile(ftpPath, dest, false);

是我长时间运行的任务,没有循环,如何检查取消它?

1 个答案:

答案 0 :(得分:4)

如果第三方API不支持取消,则没有干净的方法。您可以 abort the thread,但我强烈建议您只有在杀死整个过程(或至少是AppDomain)时才会这样做。< / p>

如果可能的话,找到支持支持取消的等效API,或者只是放弃请求并让它采取行动,只是忽略结果。