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

本文关键字:循环 长时间 任务 运行 一个 取消 | 更新日期: 2023-09-27 18:25:19

我是c#任务的新手,我想做的是转换

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

像一样执行任务

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

我也知道使用CancellationTokenSource来取消任务。然而,我看到的例子都是长循环运行的线程,如forforeachwhile,它们检查IsCancellationRequested以取消循环中的任务。

if (ct.IsCancellationRequested)
{
    break;
}

但我的长期任务是用FTP下载一个文件。GetFile方法来自第三方dll库。

ftp.GetFile(ftpPath, dest, false);

由于我的长期运行任务没有任何循环,我如何检查然后取消它?

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

如果第三方API不支持取消,则没有干净的方法。可以中止线程,但我强烈建议只有在杀死整个进程(或至少AppDomain)时才这样做。

如果可能的话,找到一个等效的API,支持取消,或者放弃请求,听其自然,忽略结果。