WPF窗口未关闭

本文关键字:窗口 WPF | 更新日期: 2023-09-27 17:50:01

你能告诉初学者为什么这个小的wpf应用程序在触发WorkflowTerminated事件后没有按预期关闭吗?使用的工作流立即终止。(使用WPF应用程序,.Net Framework 3.5)

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();
    }
}

WPF窗口未关闭

可能是因为回调在另一个线程上。一个基本的解决方法是使用Environment.Exit(1);

完全终止应用程序。

要在UI线程上调用close函数,你应该使用:

wfRuntime.WorkflowTerminated += (se, ev) => {
    // call back to the window to do the UI-manipulation
    this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() 
    {
       this.Close();
    }));
};