我是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);
是我长时间运行的任务,没有循环,如何检查取消它?
答案 0 :(得分:4)
如果第三方API不支持取消,则没有干净的方法。您可以 abort the thread,但我强烈建议您只有在杀死整个过程(或至少是AppDomain)时才会这样做。< / p>
如果可能的话,找到支持支持取消的等效API,或者只是放弃请求并让它采取行动,只是忽略结果。