2013-10-01 4 views
-1

Environment Win XP, Outlook 2003Нарушения доступа Исключение при использовании адресной книги Outlook

  1. У меня есть компонент WPF, который Открыть адрес перспективы книги с помощью Interop.MAPI

  2. пользователя будет выбрать несколько receipients и выберите ok, который затем закрывает адресную книгу.

  3. Как только всплывающее окно закрыто, я могу заметить, что курсор ожидания приходит, и через несколько секунд я получаю сообщение об ошибке, а затем мое приложение (WPF) завершается.

Я потратил часы, чтобы понять это еще не повезло, я скопировал следующее исключение из Event Viewer.

  • я понял это не проблема с адресной книгой модулем потому же адресная книга используются в другом модуле, где он работает штрафа.

  • Пойманный блок никогда не был достигнут в этом методе, когда я открываю адресную книгу и читаю выбранные имена.

Exception Информация: System.AccessViolationException Stack: на MS.Win32.UnsafeNativeMethods.DispatchMessage (System.Windows.Interop.MSG ByRef) в System.Windows.Threading.Dispatcher.PushFrameImpl (System.Windows.Threading.DispatcherFrame) в System.Windows.Threading.Dispatcher.PushFrame (System.Windows.Threading.DispatcherFrame) в System.Windows.Window.ShowHelper (System.Object) в System.Windows.Window. Показать() в System.Windows.Window.ShowDialog() в xxxxx.Frw.Base.Client.UI.DialogService.ShowDialog (xxxxx.Frw.Base.Client.UI.BaseViewModel) в xxxxx.Frw.Base.Client.UI.DialogService.ShowDialog (xxxxx.Frw.Base. Client.UI.BaseViewModel, System.Windows.Controls.UserControl) на xxxxx.Frw.Region.Reu.Client.UI.ViewModels.ReportHeaderViewModel.ShowDistributionList() в xxxxx.Frw.Region.Reu.Client.UI. ViewModels.ReportHeaderViewModel.b__1 (System.Object) в xxxxx.Frw.Base.Client.UI.Commands.RelayCommand.Execute (System.Object) на MS.Internal.Commands.CommandHelpers.CriticalExecuteCommandSource (System.Windows.Input. ICommandSource, Boolean) в System.Windows.Controls.Primitives.ButtonBase.OnClick() в System.Windows.Controls.Button.OnClick () на System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp (System.Windows.Input.MouseButtonEventArgs) в System.Windows.UIElement.OnMouseLeftButtonUpThunk (System.Object, System.Windows.Input.MouseButtonEventArgs) в системе. Windows.Input.MouseButtonEventArgs.InvokeEventHandler (System.Delegate, System.Object) на System.Windows.RoutedEventArgs.InvokeHandler (System.Delegate, System.Object) на System.Windows.RoutedEventHandlerInfo.InvokeHandler (System.Object, System.Windows.RoutedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl (System.Object, System.Windows.RoutedEventArgs, Boolean) на System.Windows.UIElement.ReRaiseEventAs (System.Windows.DependencyObject, System.Windows.RoutedEventArgs, System.Windows.RoutedEvent) в System.Windows.UIElement.OnMouseUpThunk (System.Object, System.Windows .Input.MouseButtonEventArgs) на System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler (System.Delegate, System.Object) на System.Windows.RoutedEventArgs.InvokeHandler (System.Delegate, System.Object) в System.Windows .RoutedEventHandlerInfo.InvokeHandler (System.Object, System.Windows.RoutedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl (System.Object, System.Windows.RoutedEventArgs, Boolean) на System.Windows.UIElement.RaiseEventImpl (System.Windows.DependencyObject, System.Windows.RoutedEventArgs) в System.Windows.UIElement.RaiseTrustedEvent (System.Windows.RoutedEventArgs) в System.Windows.UIElement.RaiseEvent (System .Windows.RoutedEventArgs, Boolean) на System.Windows.Input.InputManager.ProcessStagingArea() в System.Windows.Input.InputManager.ProcessInput (System.Windows.Input.InputEventArgs) в System.Windows.Input.InputProviderSite .ReportInput (System.Windows.Input.InputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput (IntPtr, System.Windows.Input.InputMode, Int32, System.Windows.Input.RawMouseActions, Int32, Int32 , Int32) на System.Windows.Interop.HwndMouseInputProvider.FilterMessage (IntPtr, MS.Internal.Interop.WindowMessage, IntPtr, IntPtr, булева ByRef) на System.Windows.Interop.HwndSource.InputFilterMessage (IntPtr, Int32, IntPtr , IntPtr, булева ByRef) на MS.Win32.HwndWrapper.WndProc (IntPtr, Int32, IntPtr, IntPtr, булева ByRef) на MS.Win32.HwndSubclass.DispatcherCallbackOperation (System.Object) в System.Windows.Threading.ExceptionWrapper .InternalRealCall (System.Delegate, System.Object, Int32) на MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen (System.Object, System.Delegate, System.Object, Int32, System.Delegate) в System.Windows .Threading.Dispatcher.I nvokeImpl (System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) на MS.Win32.HwndSubclass.SubclassWndProc (IntPtr, Int32, IntPtr, IntPtr) в MS.Win32.UnsafeNativeMethods .DispatchMessage (System.Windows.Interop.MSG ByRef) на System.Windows.Threading.Dispatcher.PushFrameImpl (System.Windows.Threading.DispatcherFrame) в System.Windows.Threading.Dispatcher.PushFrame (System.Windows.Threading .DispatcherFrame) на System.Windows.Application.RunDispatcher (System.Object) на System.Windows.Application.RunInternal (System.Windows.Window) на System.Windows.Application.Run (System.Windows.Window) в xxxxx.Frw.Main.Client.UI.App. Главная()

ответ

0

Хотя я не мог понять, что вызывает этот вопрос я нашел решение, чтобы предотвратить падение приложения,

Поскольку необработанное исключение показывает последний вызывается метод управляемого кода как

xxxxx.Frw.Base.Client.UI.DialogService.ShowDialog()

Я просто добавил попробовать поймать с HandleProcessCorruptedStateExceptions декорирования метода после добавления этого атрибута я был в состоянии поймать исключение, брошенное unmaged MAPI Interop и обрабатывать приложения сбоя проблемы.

[HandleProcessCorruptedStateExceptions] 
public void ShowDialog() 
{ 
try 
    { 
    } 
Catch(Exception ex) 
    { 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^