/// <summary> /// 窗体关闭事件 /// </summary> public void ClosingCommandFunc(object sender, CancelEventArgs e) { if (wo != null) { wo.Stop(); wo.Dispose(); } if (mp3FileReader != null) { mp3FileReader.Close(); mp3FileReader.Dispose(); } if (getCurrrentTime_th != null) { if ((getCurrrentTime_th.ThreadState & ThreadState.Running) == ThreadState.Running || (getCurrrentTime_th.ThreadState & ThreadState.Suspended) == ThreadState.Suspended) { getCurrrentTime_th.Abort(); } } System.Environment.Exit(0); }
internal static void StartAmbientLoop() { var athread = new Thread(() => { MemoryStream str = null; NAudio.Wave.Mp3FileReader mp3 = null; NAudio.Wave.WaveOut o = null; bool shuttingDown = false; Engine.AppearanceManager.OnExit += () => { shuttingDown = true; o?.Stop(); o?.Dispose(); mp3?.Close(); mp3?.Dispose(); str?.Close(); str?.Dispose(); }; while (shuttingDown == false) { if (Engine.SaveSystem.CurrentSave != null) { if (Engine.SaveSystem.CurrentSave.MusicEnabled) { str = new MemoryStream(GetRandomSong()); mp3 = new NAudio.Wave.Mp3FileReader(str); o = new NAudio.Wave.WaveOut(); o.Init(mp3); bool c = false; o.Play(); o.PlaybackStopped += (s, a) => { c = true; }; while (!c) { if (Engine.SaveSystem.CurrentSave.MusicEnabled) { try { o.Volume = (float)Engine.SaveSystem.CurrentSave.MusicVolume / 100; } catch { } } else { o.Stop(); c = true; } Thread.Sleep(10); } } else { Thread.Sleep(10); } } else { Thread.Sleep(10); } } }); athread.IsBackground = true; athread.Start(); }