Как мне управлять задачами, чтобы отслеживать статус / отменить - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь автоматизировать некоторые файлы Excel, чтобы можно было обновить их и отправить по электронной почте.

В настоящее время я делаю это методом очереди, но у меня есть проблема, из-за которой у меня может быть 2 файла, которые необходимо отправитьв 10:00 для обновления одного из файлов требуется 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, и я не могу конвертировать, они предлагают cвисит ниже, что более эквивалентно task.run

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

Что я хочу сделать, это получить статистику задачи в списке, чтобы я знал статус и, когда она завершится, и т.д., также возможность отменызадание, если требуется

Помощь оценена

...