WPF窗口没有关闭
问题描述:
你能告诉初学者为什么这个小的WPF应用程序在WorkflowTerminated事件触发后没有按照预期关闭?使用的工作流程会立即终止。 (使用WPF应用程序,.Net Framework 3.5)WPF窗口没有关闭
public partial class MainWindow : Window
{
private WorkflowRuntime wfRuntime = new WorkflowRuntime();
public MainWindow()
{
InitializeComponent();
wfRuntime.WorkflowTerminated += (se, ev) => this.Close(); // this doesn't close the window
wfRuntime.WorkflowCompleted += (se, ev) => this.Close();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WorkflowInstance launcherWorkflow = wfRuntime.CreateWorkflow(typeof(InstallerWorkflow));
launcherWorkflow.Start();
}
}
答
可能因为回调在另一个线程上。一个基本的解决办法是完全终止使用Environment.Exit(1);
要调用UI线程上的关闭功能,你应该使用的应用程序:
wfRuntime.WorkflowTerminated += (se, ev) => {
// call back to the window to do the UI-manipulation
this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate()
{
this.Close();
}));
};
当设置在终止-事件处理程序断点时,它甚至被处决? – ZoolWay 2011-04-14 07:28:37
是的,它被称为。 – nabulke 2011-04-14 07:30:09
好的问题的方式,这使我困扰之前,很难计算,+1 – 2011-04-14 07:49:48