private static void RecycleVlcControl(VlcControl oldControl, Form hostForm) { oldControl.Stop(); oldControl.ResetMedia(); // hostForm.Controls.Remove(oldControl); // oldControl.Dispose(); var timer = new TimerX { Interval = 1 }; ElapsedEventHandler handler = (s, e) => { hostForm.BeginInvoke(new Action(() => { // CreateVlcControl(hostForm); timer.Enabled = false; oldControl.SetMedia(new FileInfo(source)); oldControl.Play(); })); }; timer.Elapsed += handler; timer.AutoReset = false; timer.Enabled = true; }
public void UnloadMedia(bool forceVideoWait = false) { if (Enabled) { Console.WriteLine($"{Name} Unloading Media!"); if (pictureBox.Image != null) { pictureBox.Image.Dispose(); } pictureBox.Image = null; CurrentMedia = null; if (vlcControl != null) { if (forceVideoWait) { vlcControl.Stop(); vlcControl.ResetMedia(); while (vlcControl.GetCurrentMedia() != null) { //Block while waiting for media to unload. } } else { ThreadPool.QueueUserWorkItem(_ => { vlcControl.Stop(); vlcControl.ResetMedia(); }); } } //Invoke((MethodInvoker)delegate { NotifyPropertyChanged(nameof(EnableButtons)); }); NotifyPropertyChanged(nameof(EnableButtons)); } }