Окно WPF не закрывается - PullRequest
       0

Окно WPF не закрывается

6 голосов
/ 14 апреля 2011

Не могли бы вы сказать новичку, почему это маленькое WPF-приложение не закрывается, как предполагалось, после возникновения события WorkflowTeridity?Используемый рабочий процесс просто прекращается немедленно.(с использованием приложения 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();
    }
}

1 Ответ

6 голосов
/ 14 апреля 2011

Возможно, потому что обратный вызов находится в другом потоке.Основной обходной путь - полностью завершить приложение, используя Environment.Exit(1);

Для вызова функции закрытия в потоке пользовательского интерфейса вы должны использовать:

wfRuntime.WorkflowTerminated += (se, ev) => {
    // call back to the window to do the UI-manipulation
    this.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() 
    {
       this.Close();
    }));
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...