如何管理任务,以便可以跟踪状态/取消

时间:2019-01-23 17:40:42

标签: vb.net multithreading task

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

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

在一些帮助下,我已经能够创建任务列表并启动它们,我已禁用WaitAll,因为我需要该软件才能继续运行,以防需要触发更多任务,将任务作为新列表昏暗(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 < / p>

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

我想做的是在列表中获取任务的统计信息,这样我就可以知道状态,完成时间等,还可以根据需要取消任务

感谢帮助

0 个答案:

没有答案