private void OnUnhandledExceptionOccurred(object sender, UnhandledExceptionOccurredEventArgs args) { lock (AppCenterLock) { if (_channelGroup != null) { AppCenterLog.Debug(AppCenterLog.LogTag, "Shutting down channel group due to unhandled exception."); _channelGroup.ShutdownAsync(); _channelGroup = null; } } }
// Internal for testing internal void InstanceConfigure(string appSecretOrSecrets) { if (_instanceConfigured) { MobileCenterLog.Warn(MobileCenterLog.LogTag, "Mobile Center may only be configured once."); return; } _appSecret = GetSecretForPlatform(appSecretOrSecrets, PlatformIdentifier); // If a factory has been supplied, use it to construct the channel group - this is designed for testing. // Normal scenarios will use new ChannelGroup(string). _channelGroup = _channelGroupFactory?.CreateChannelGroup(_appSecret) ?? new ChannelGroup(_appSecret); ApplicationLifecycleHelper.Instance.UnhandledExceptionOccurred += (sender, e) => _channelGroup.ShutdownAsync(); _channel = _channelGroup.AddChannel(ChannelName, Constants.DefaultTriggerCount, Constants.DefaultTriggerInterval, Constants.DefaultTriggerMaxParallelRequests); if (_logUrl != null) { _channelGroup.SetLogUrl(_logUrl); } _instanceConfigured = true; MobileCenterLog.Assert(MobileCenterLog.LogTag, "Mobile Center SDK configured successfully."); }