Я пытаюсь выйти на шлюз, получить данные, а затем вернуться к потоку пользовательского интерфейса. Продолжается ContinueWith, но Gateway никогда не делает ???Task.Factory.StartNew не запускается?
ILogonResult result;
Task.Factory
.StartNew(() =>
{
result = Gateway.Authenticate(a, b);
})
.ContinueWith(task =>
{
TaskScheduler.FromCurrentSynchronizationContext();
DoSomeUI(result);
}
);
Контекст находится в неправильном месте здесь, он должен быть параметром в 'ContinueWith' ... –
Я вижу много проблем здесь, но есть на самом деле не достаточно информации, чтобы ответить на ваш вопрос. 1) Вы не должны устанавливать переменную 'result' в задаче, вы должны возвращать результат; продолжение может затем прочитать значение из 'task.Result'. 2) Ваш 'fromUIContext' находится не в том месте; вы хотите, чтобы это было вторым аргументом 'ContinueWith', чтобы продолжить выполнение в потоке пользовательского интерфейса. «DoSomeUI» также должен быть дан результат задачи в качестве параметра. Кроме того, каков тип 'Result'? Не зная, что трудно сказать, что может быть с «Authenticate». – Servy
Кроме того, я собираюсь использовать свои психические методы отладки, чтобы сказать, что «результат» - это «Задача» и запуск задачи, которая запускает задачу; он завершается, когда вы завершаете задачу, а не когда выполняемая задача фактически завершается, поэтому продолжение, кажется, запускается сразу же. –
Servy