Domanda

On launching my WPF application, I try to see if a particular required exe is running or not. If that is not running, I throw InvalidOperationException like this

if (gaInterface.ConnectToGA() != 0)
            throw new InvalidOperationException(Properties.Resources.GAConnectionErrorText);

  private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {
        var exception = e.Exception;
        ShowErrorMessage(exception);
        if (string.CompareOrdinal(exception.Message, FP.Properties.Resources.GAConnectionErrorText) == 0 || (
            !ReferenceEquals(exception.InnerException, null) &&
            string.CompareOrdinal(exception.InnerException.Message, FP.Properties.Resources.GAConnectionErrorText) == 0))
            e.Handled = false;
    }

e.Handled does get set to true, but only in Release mode application crashes after this. What could be the reason here?

È stato utile?

Soluzione

Set e.Handled to true and then shutdown the application.

private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
    var exception = e.Exception;
    ShowErrorMessage(exception);
    if (string.CompareOrdinal(exception.Message, FP.Properties.Resources.GAConnectionErrorText) == 0 || (
        !ReferenceEquals(exception.InnerException, null) &&
        string.CompareOrdinal(exception.InnerException.Message, FP.Properties.Resources.GAConnectionErrorText) == 0))
        {            
             e.Handled = true;
             Application.Current.Shutdown();
        }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top