2009-11-18 3 views
0

У меня действительно странная вещь, происходящая в моем приложении wpf.Приложение WPF закрывается в странные моменты

Каждый раз, когда я закрываю что-то (диалоговое окно, окно и т. Д.), Приложение ENTIRE закрывается, а не только окно/диалог, который закрыт.

Это происходит не только при непосредственном вызове метода Close, но и при закрытии элемента, например: когда я нажимаю «OK» в диалоговом окне и возвращается из метода ShowDialog().

Кроме того, это происходит не сразу, а только тогда, когда метод, в котором происходит событие close. Вот пример, чтобы объяснить это лучше:

Public Sub addNewCanvas(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs) 
    Dim dlg As New addCanvasDgBox 
    Dim result As Nullable(Of Boolean) = dlg.ShowDialog 
    'The following if is executed, and so is the addCanvas() method 
    If (result = True) Then 
     addCanvas() 
    End If 
End Sub 
'Here comes the problem: efter the routine is ended instead of returning 
'to the normal execution, the entire App.Run() method returns, closing the application 

Я действительно не понимаю, почему это происходит ... никаких исключений не воскресают, журнал вывода или VisualStudio не имеют ничего, чтобы сказать, что все переменные правильно индексируются.

Если у вас есть идеи, пожалуйста, дайте мне знать! Это сводит меня с ума! Спасибо заранее.

Master_T

ответ

1

Ок, понял это вскоре после того, как задать вопрос (конечно ... вы проходите через час интересно, а затем вы найдете проблемные моменты ПОСЛЕ обратились за помощью: D)

Проблема заключалась в том, что приложение Я работаю над этим, и я только сейчас заметил, что он использовал странный способ запустить приложение. Он в основном проходит экземпляр приложения к графическому пользовательскому интерфейсу, который затем инициализирует приложение с экземпляром себя ... на самом деле не понимаю, почему он сделал что-то так странно, во всяком случае я решить проблему таким образом:

app.ShutdownMode = ShutdownMode.OnExplicitShutdown 

Thnx в любом случае за помощь! (кстати, не возникало никаких исключений ...)

1

часов для необработанных исключений: Запустите приложение в отладке и открыть окно исключений (debug-> исключение или Ctrl + Alt + E на моей машине) и проверить Common Language Runtime исключений, Брошенный колонке. Затем выполните ваши обычные операции и посмотрите, не выбрасываются ли какие-либо необработанные исключения.

Сообщите мне, если это приблизит вас к проблеме.

+0

Великий совет, только что сэкономил мне часы! – vaughan

0

Возможно, существует необработанное исключение, которое не вылавливает. Попробуйте подключить обработчик событий к классам приложений DispatcherUnhandledException.