Я пытаюсь поймать ошибку, которую выдает мой метод, используя продолжение.Затем я хочу обновить пользовательский интерфейс моей страницы веб-форм, которая называется задачами.Я использую TaskScheduler.FromCurrentSynchronizationContext (), чтобы переключиться обратно на поток пользовательского интерфейса, но, похоже, он не работает.Каждый раз, когда я перехожу, вызывается MyMethodWhichThrowsAnError (), а затем продолжение задачи, которое не использует поток пользовательского интерфейса.Задача, вызывающая поток пользовательского интерфейса, никогда не выполняется.
Если я изменю основную задачу, вызывающую MyMethodWhichThrowsAnError (), на использование контекста пользовательского интерфейса, тогда будут выполнены оба продолжения.Код кажется правильным в соответствии с блогами, которые я нашел, но он не работает.Что я делаю не так?
Спасибо!
Task task = Task.Factory.StartNew(() =>
{
MyMethodWhichThrowsAnError();
});
продолжение, которое использует поток пользовательского интерфейса:
task.ContinueWith(lastTask =>
{
if (task.Status == TaskStatus.Faulted)
{
label1.Text = "my friendly message";
}
}, TaskScheduler.FromCurrentSynchronizationContext());
продолжение, которое не использует поток пользовательского интерфейса:
task.ContinueWith(task2 =>
{
if (task.Status == TaskStatus.Faulted)
{
label1.Text = "my friendly message";
}
});