2011-04-14 28 views
6

Bu küçük WPF uygulamasının neden WorkflowTerminated olayının patlaması sonrasında amaçlanan şekilde kapanmadığını bir başlangıç ​​olarak söyleyebilir misiniz? Kullanılan iş akışı hemen sonlandırılıyor.WPF penceresi kapatılmadı

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

sonlandırıldı-EventHandler bir kesme noktası ayarlamak, hatta yürütülür: Temel bir çözüm tamamen kullanmanız gereken UI iş parçacığı üzerinde yakın işlevini çağırmak için Environment.Exit(1);

kullanarak uygulamayı sonlandırmak için mi? – ZoolWay

+0

Evet denir. – nabulke

+1

Bu arada iyi soru, bu beni daha önce perili ve çok zor anlamaya, +1 –

cevap

6

(bir WPF uygulama, .Net Framework 3.5 kullanarak) Muhtemelen geri arama başka iş parçacığı üzerinde olduğu için.

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

Uygulama nesnesinde bir exit() yöntemi yok. Muhtemelen bir WPF uygulaması olduğu için? Ben yardımcı olan Application.Current.Shutdown() denedim. Hala kapanmıyor ... – nabulke

+0

Pardon, bana 'Environment.Exit (1); ' –

+0

okumalı. Sonlandırıcı olayı doğru konuya nasıl gönderebilirim (GUI iş parçacığı)? – nabulke

İlgili konular