c# - WPF 窗口不关闭

标签 c# wpf

您能告诉初学者为什么这个小型 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();
    }
}

最佳答案

可能是因为回调在另一个线程上。一个基本的解决方法是使用 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();
    }));
};

关于c# - WPF 窗口不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659930/

相关文章:

c# - 有没有办法自定义 Thinktecture.IdentityServer.v2 登录页面?

c# - DbContext(string nameOrConnectionString) 的用法

c# - 在 PowerShell 中使用 XAML/WPF,如何填充列表框?

c# - 仅向扩展器标题添加上下文菜单

wpf - 如何在 RichTextBox 中以编程方式移动插入符位置?

c# - 有没有一种方法可以使用ObservableCollection和MVVM刷新WPF DataGrid,而无需通知ItemsSource集合?

c# - IsWebSocketRequest 不能在单声道中工作

c# - 如何更新 mongodb 中除指定字段之外的所有文档字段

wpf - 数据触发重复使用

c# - MVVM 模式 : an intermediate View between Command binding and ViewModel execute