/// <summary> /// Registration method. Call this from OnLaunched and OnActivated inside the App.xaml.cs /// </summary> /// <returns></returns> public static AsyncSynchronizationContext Register() { var syncContext = Current; if (syncContext == null) throw new InvalidOperationException("Ensure a synchronization context exists before calling this method."); var customSynchronizationContext = syncContext as AsyncSynchronizationContext; if (customSynchronizationContext == null) { customSynchronizationContext = new AsyncSynchronizationContext(syncContext); SetSynchronizationContext(customSynchronizationContext); } return customSynchronizationContext; }
/// <summary> /// main configuration method. call in app constructor /// </summary> /// <param name="this"></param> /// <param name="appId"></param> /// <param name="rootFrame"></param> /// <returns></returns> public static IHockeyClientConfigurable Configure(this IHockeyClient @this, string appId, Frame rootFrame = null) { @this.AsInternal().PlatformHelper = new HockeyPlatformHelperWP8SL(); @this.AsInternal().AppIdentifier = appId; CrashHandler.Current.Application = Application.Current; CrashHandler.Current.Application.UnhandledException += (sender, args) => { CrashHandler.Current.HandleException(args.ExceptionObject); if (customUnhandledExceptionAction != null) { customUnhandledExceptionAction(args); } }; if (rootFrame != null) { //Idea based on http://www.markermetro.com/2013/01/technical/handling-unhandled-exceptions-with-asyncawait-on-windows-8-and-windows-phone-8/ //catch async void Exceptions AsyncSynchronizationContext.RegisterForFrame(rootFrame, CrashHandler.Current); } return(@this as IHockeyClientConfigurable); }