首页 > 解决方案 > 如何管理任务以便跟踪状态/取消

问题描述

我正在尝试自动化一些 excel 文件,以便刷新然后通过电子邮件发送出去。

我目前通过队列方法执行此操作,但我有一个问题,我可能有 2 个文件需要在 10:00 发送,其中 1 个文件需要 2 分钟刷新,另一个需要 5 分钟刷新,然后我有另一个文件应该在 10:05 发送,这必须等到其他文件完成。

在一些帮助下,我已经能够创建一个任务列表并启动它们,我禁用了 WaitAll,因为我需要软件继续运行以防需要触发更多任务,Dim tasks As New List(Of Task )() 将在程序之外,因此可以使用。

我仅限于 VB 2010 和 .Net 4.0 这就是为什么我使用 Task.Factory.StartNew 而不是使用 Task.Run

    Dim tasks As New List(Of Task)()
    tasks.Add(Task.Factory.StartNew((Sub() OpenExcel("C:\Temp\Excel\Book1.xlsx"))))
    tasks.Add(Task.Factory.StartNew((Sub() OpenExcel("C:\Temp\Excel\Book2.xlsx"))))
    tasks.Add(Task.Factory.StartNew((Sub() OpenExcel("C:\Temp\Excel\Book3.xlsx"))))

     ‘ Disable if don’t wish to wait, will continue to run.
    'Task.WaitAll(tasks.ToArray)

我一直在阅读并且越来越困惑我发现了一些关于取消令牌的内容,但是我发现的所有内容都在 C 中并且我无法转换,他们建议更改为以下更相当于 task.run

tasks.Add(Task.Factory.StartNew((Sub() OpenExcel("C:\Temp\Excel\Book1.xlsx")), CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default))

我想要做的是获取列表中任务的统计信息,以便我知道状态以及完成时间等,如果需要,还可以取消任务

帮助表示赞赏

标签: vb.netmultithreadingtask

解决方案


推荐阅读