Несколько параллельных задач.ContinueWith порядка выполнения

Вопрос

Это, вероятно, что-то простое, что я пропустил.

Допустим, я знаю (in loveley VB):

Dim t1 As New Task(Sub() Debug.WriteLine("t1"))
Dim t2 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t2"))
Dim t3 As Task = t1.ContinueWith(Sub() Debug.WriteLine("t3"))
t1.Start()

Обратите внимание, что t1.ContinueWith используется дважды. Каков предпочтительный порядок выполнения этих задач? Для меня это либо случайное, либо неправильное.

Почему?

Причина, по которой я хочу это сделать ...

  1. Создать задачу для сбора и возврата данных
  2. За ней следует задача, которая «сортирует» Пользовательский интерфейс в TaskScheduler.FromCurrentSynchronizationContext () (поток пользовательского интерфейса)
  3. Следуйте исходной задаче сбора данных, преобразовывая данные в длинный отчет (занимает много времени)
  4. Вернитесь в поток пользовательского интерфейса, назначьте этот отчет к элементу управления предварительным просмотром
  5. Очистка (избавьтесь от моей анимации прогресса и т. д.)

Это усложняется тем фактом, что шаг 4 необязательный .

Среди всего этого, мои задачи отклоняются назад, чтобы установить свойства членов, чтобы пользовательский интерфейс и задачи могли хорошо работать. Возможно, мне следует полностью отказаться от результата задачи и просто придерживаться синхронизации моих переменных-членов. Все они назначаются только один раз.

Спасибо, Том

13
задан Tom 19 November 2010 в 15:57
поделиться