短篇小说: 为什么这样做(在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,执行将等待任务终止(意味着用户关闭窗口)。