C#取消一个不是循环的长时间运行的任务
本文关键字:循环 长时间 任务 运行 一个 取消 | 更新日期: 2023-09-27 18:25:19
我是c#任务的新手,我想做的是转换
downloadThread = new Thread(DownLoadFile);
downloadThread.Start();
像一样执行任务
var t = Task.Factory.StartNew(DownLoadFile);
我也知道使用CancellationTokenSource来取消任务。然而,我看到的例子都是长循环运行的线程,如for
、foreach
、while
,它们检查IsCancellationRequested
以取消循环中的任务。
if (ct.IsCancellationRequested)
{
break;
}
但我的长期任务是用FTP下载一个文件。GetFile
方法来自第三方dll库。
ftp.GetFile(ftpPath, dest, false);
由于我的长期运行任务没有任何循环,我如何检查然后取消它?
如果第三方API不支持取消,则没有干净的方法。可以中止线程,但我强烈建议只有在杀死整个进程(或至少AppDomain)时才这样做。
如果可能的话,找到一个等效的API,支持取消,或者放弃请求,听其自然,忽略结果。