UI задача не работает, как ожидалось - PullRequest
0 голосов
/ 01 июля 2010

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

Что я делаю не так?

Приветствия
Berryl

ProjectSelectionViewModel vm = null;
SetStatus("Fetching data...");
var task = Task.Factory.StartNew(() =>
    {
        vm = presentationFactory.GetProjectSelectionViewModel();
    }
                            );
task.ContinueWith(t => SetStatus("Finished!!!"), TaskScheduler.FromCurrentSynchronizationContext());
var userAction = uiService.ShowDialog(Strings.ViewKey_ProjectPicker, vm);
// etc.

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Как-то так я думаю:

ProjectSelectionViewModel vm = null;
SetStatus("Fetching data...");
var task = Task.Factory.StartNew(() =>
{
    vm = presentationFactory.GetProjectSelectionViewModel();
}
                            );
task.ContinueWith(t =>
    {
        SetStatus("Finished!!!");
        var userAction = uiService.ShowDialog(Strings.ViewKey_ProjectPicker, vm);
    },
    TaskScheduler.FromCurrentSynchronizationContext());
0 голосов
/ 01 июля 2010

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

Вы должны вызывать продолжение в обратном вызове из выборки, а не в том же методе, который фактически инициирует запрос.

...