/// <summary>
 /// Dispose
 /// </summary>
 public void Dispose()
 {
     deviceCommunication?.Dispose();
     streamingConnection?.Dispose();
     deviceConnection?.Dispose();
     deviceControl?.Dispose();
 }
        /// <summary>
        /// Set the device status.
        /// </summary>
        /// <param name="state">the state</param>
        /// <param name="statusText">status text</param>
        public void SetDeviceState(DeviceState state, string statusText = null)
        {
            if (deviceControl == null || deviceControl.IsDisposed)
            {
                return;
            }

            if (deviceControl.InvokeRequired)
            {
                if (!deviceControl.IsDisposed)
                {
                    try
                    {
                        SetDeviceStateCallback callback = new SetDeviceStateCallback(SetDeviceState);
                        deviceControl?.Invoke(callback, new object[] { state, statusText });
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"SetDeviceState: {ex.Message}");
                    }
                }
            }
            else
            {
                // Restart when recovering from a connection error.
                if (state != DeviceState.ConnectError && wasPlayingWhenConnectError)
                {
                    wasPlayingWhenConnectError = false;
                    if (state != DeviceState.Playing)
                    {
                        Task.Run(() => {
                            OnClickPlayPause();
                        });
                    }
                }
                else if (state == DeviceState.ConnectError && deviceState == DeviceState.Playing)
                {
                    wasPlayingWhenConnectError = true;
                }

                if (state == DeviceState.ConnectError && IsGroup())
                {
                    deviceState = DeviceState.Disposed;
                    deviceControl?.Dispose();
                    menuItem?.Dispose();
                }
                else
                {
                    deviceState = state;
                    deviceControl?.SetStatus(state, statusText);
                    if (deviceControl != null)
                    {
                        deviceControl.Visible = true;
                    }
                }
            }
        }
Пример #3
0
 /// <summary>
 /// Dispose
 /// </summary>
 public void Dispose()
 {
     isDisposed = true;
     Stop();
     deviceCommunication?.Dispose();
     streamingConnection?.Dispose();
     deviceConnection?.Dispose();
     deviceControl?.Hide();
     deviceControl?.Dispose();
 }
Пример #4
0
        public void Close_Click(object sender, RoutedEventArgs e)
        {
            pwmDevice?.Dispose();
            // Shutdown the Pi
            // Windows.System.ShutdownManager.BeginShutdown(ShutdownKind.Shutdown, TimeSpan.FromSeconds(0.5));
            // Shutdown the current application
            Application.Current.Exit();
            StreamWriter sw = File.CreateText("");

            sw.Dispose();
        }