调度程序不在任务内部工作

时间:2016-04-15 10:00:35

标签: c# wpf multithreading dispatcher

短篇小说: 为什么这样做(在Task中的匿名方法):

 Task.Run(() => MyMetod() );

但是这不起作用(调度程序调用的方法相同)?

Task.Run(() => Application.Current.Dispatcher.Invoke(() => MyMetod() ));

逐步调试正确地按预期输入第一个方法但从不进入第二个方法。在调用InvokeAsynch方法之前是否需要使用anthing?

Context是一个WPF应用程序。

编辑: 很长的故事: 最后,我只是尝试在异步任务中运行一个Window。 这个窗口是在主线程中创建的,所以我必须在任务中使用一个调度程序。 我对这一切都很赞,所以可能有更简单的方法来显示这个窗口:

主线程:

     Window window = new Window();
    View view = new View();
    ViewModel viewModel = new ViewModel();
    window.Content = view;

... business stuff

此时我想打开窗口并让程序继续运行: window.ShowDialog()暂停执行

window.Show();返回imediatly

所以我需要通过Task.Run以不同的方式运行窗口:  Task.Run(()=> window.ShowDialog())); 因为窗口被创建成不同的东西所以不会起作用。

所以我认为解决方案看起来像:

Task.Run(() => Application.Current.Dispatcher.Invoke(() => window.ShowDialog() ));

但是这会引起提到的问题......

如果我使用await,执行将等待任务终止(意味着用户关闭窗口)。

0 个答案:

没有答案