C# gemischte Verwendung von Aufgabe und Dispatcher.Aufrufen, warum es halte?

Habe ich versucht unten snippet:

    public Task RunUiTask(Action action)
    {
        var task = Task.Factory.StartNew(() =>
        {
            Dispatcher.Invoke(DispatcherPriority.Background, action);
        });
        return task;
    }

    private void OnCreateTask(object sender, RoutedEventArgs e)
    {
        var task = RunUiTask(() =>
            {
                for(int i=0;i<10;i++)
                {
                    ResultTextBlock.Text += i.ToString();
                }
            });
        task.Wait();                        //(a) Program stopped here
        ResultTextBlock.Text += "Finished"; //(b) Never called;
    }

Ich konnte nicht verstehen, warum, wenn OnCreateTask (eine Schaltfläche click-Ereignis-handler) aufgerufen wird, hält das Programm an (a) und (b) wird nie aufgerufen.

Hinweis: ich weiß, dass ich verwenden können, Dispatcher.BeginInvoke, um das Programm reagieren, aber das ist nicht mein Anliegen hier.

Kann jede Stelle sagen Sie, warum das Programm hält an (a) und weshalb (b) nie aufgerufen wird? Danke.

InformationsquelleAutor David | 2013-03-19
Schreibe einen Kommentar