void WrapCallback(Action action) { try { try { action(); } catch (Exception ex) { if (CallbackException != null) { CallbackException.Invoke(this, ex); } } } #if DEBUG && BREAK_ON_EXCEPTED_CALLBACK catch (Exception unhandled) { System.Diagnostics.Debug.Print("UNHANDLED EXCEPTION IN CALLBACK: {0}: {1} @ {2}", unhandled.GetType(), unhandled.Message, unhandled.StackTrace); System.Diagnostics.Debugger.Break(); } #else catch { } #endif }
private void WrapCallback(Action action) { try { try { action(); } catch (Exception ex) { CallbackException?.Invoke(this, ex); } } catch (Exception) { } }
private void WrapCallback(Action action) { try { try { action(); } catch (Exception ex) { CallbackException?.Invoke(this, ex); } } catch (Exception ex) { Tools.Log(ex.StackTrace); } }
private void WrapCallback(Action action) { try { try { action(); } catch (Exception ex) { CallbackException?.Invoke(this, ex); throw ex; } } #if DEBUG catch (Exception unhandled) { System.Diagnostics.Debug.Print("回调时发生了未知的异常: {0}: {1} @ {2}", unhandled.GetType(), unhandled.Message, unhandled.StackTrace); System.Diagnostics.Debugger.Break(); } #else catch { } #endif }
private void ZInvokeWorker(cTrace.cContext pParentContext) { var lContext = pParentContext.NewMethod(nameof(cCallbackSynchroniser), nameof(ZInvokeWorker)); while (mInvokes.TryDequeue(out var lInvoke)) { try { switch (lInvoke.EventArgs) { case cMessagePropertyChangedEventArgs lEventArgs: MessagePropertyChanged?.Invoke(mSender, lEventArgs); break; case cMailboxPropertyChangedEventArgs lEventArgs: MailboxPropertyChanged?.Invoke(mSender, lEventArgs); break; case PropertyChangedEventArgs lEventArgs: PropertyChanged?.Invoke(mSender, lEventArgs); break; case cResponseTextEventArgs lEventArgs: ResponseText?.Invoke(mSender, lEventArgs); break; case cNetworkReceiveEventArgs lEventArgs: NetworkReceive?.Invoke(mSender, lEventArgs); break; case cNetworkSendEventArgs lEventArgs: NetworkSend?.Invoke(mSender, lEventArgs); break; case cMailboxMessageDeliveryEventArgs lEventArgs: MailboxMessageDelivery?.Invoke(mSender, lEventArgs); break; case cActionIntEventArgs lEventArgs: lEventArgs.Action(lEventArgs.Int); break; default: lContext.TraceError("unknown event type", lInvoke.EventArgs); break; } } catch (Exception e) { lContext.TraceException("error when invoking event handler", e); try { CallbackException?.Invoke(mSender, new cCallbackExceptionEventArgs(e)); } catch { } } if (lInvoke.Releaser != null) { lInvoke.Releaser.Release(lContext); } } }
private void Model_CallbackException(object sender, CallbackExceptionEventArgs e) { CallbackException?.Invoke(sender, e); }