/// <summary> /// Invoked when application execution is being suspended. Application state is saved /// without knowing whether the application will be terminated or resumed with the contents /// of memory still intact. /// </summary> /// <param name="sender">The source of the suspend request.</param> /// <param name="e">Details about the suspend request.</param> private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); if (arduino != null) { arduino.digitalWrite(13, PinState.LOW); arduino.pinMode(13, PinMode.INPUT); // Onboard LED. arduino.Dispose(); arduino = null; } if (arduinoUsb != null) { arduinoUsb.end(); arduinoUsb.Dispose(); arduinoUsb = null; } if (gpioPins != null) { foreach (KeyValuePair<GpioPin, KeyValuePair<TextBlock, TextBlock>> Pin in gpioPins.Values) Pin.Key.Dispose(); gpioPins = null; } if (this.sampleTimer != null) { this.sampleTimer.Dispose(); this.sampleTimer = null; } if (this.chatServer != null) { this.chatServer.Dispose(); this.chatServer = null; } if (this.bobClient != null) { this.bobClient.Dispose(); this.bobClient = null; } if (this.controlServer != null) { this.controlServer.Dispose(); this.controlServer = null; } if (this.sensorServer != null) { this.sensorServer.Dispose(); this.sensorServer = null; } if (this.provisioningClient != null) { this.provisioningClient.Dispose(); this.provisioningClient = null; } if (this.thingRegistryClient != null) { this.thingRegistryClient.Dispose(); this.thingRegistryClient = null; } if (this.xmppClient != null) { this.xmppClient.Dispose(); this.xmppClient = null; } Log.Terminate(); deferral.Complete(); }