vb.net - 如何管理任务以便跟踪状态/取消
问题描述
我正在尝试自动化一些 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))
我想要做的是获取列表中任务的统计信息,以便我知道状态以及完成时间等,如果需要,还可以取消任务
帮助表示赞赏
解决方案
推荐阅读
- sql - 显示 SQL 跟踪(Springboot+Mybatis)
- jquery - 当子 Div 的显示为无时如何隐藏父 Div
- flutter - Flutter - TextFormField 上的 Time.now()
- python-2.7 - 在 GoogleAppEngine oauth flow 中如何获取 Web App 凭据
- nativescript - 如何在 NativeScript 中设置资产的正确路径?
- dotnetnuke - 禁用 CKEditor 中的“电话号码”字段
- ruby-on-rails - 获取两个日期之间的天数Rails“日期”
- spring-boot - 使用 AutoConfigureMockMvc 和 CompletableFuture 测试 ControllerAdvice
- javascript - NavigationService 减慢了 react-native 生产
- shell - 使用 awk 将十六进制转换为十进制