async Task startVideoAsync(SimplePictureBox pb, VideoItem item) { using (var cts = new CancellationTokenSource()) { item.Cts = cts; try { await SimpleMJPEGDecoder.StartAsync( // await SimpleMJPEGDecoderDataFlow.StartAsync( image => { sync.Post(new SendOrPostCallback(_ => pb.Image = image), null); }, item.Url, item.Login, item.Password, cts.Token, item.MaxStreamBufferSize); } catch (OperationCanceledException ex) { Console.WriteLine(ex); } catch (Exception ex) { Console.WriteLine(ex); pb.Image = (Image)Properties.Resources.notready.Clone(); } finally { item.Playing = false; } } }
void VideoList_ListChanged(object sender, ListChangedEventArgs e) { if (e.ListChangedType == ListChangedType.ItemAdded) { var item = (VideoItem)((IList)sender)[e.NewIndex]; var pb = new SimplePictureBox { Name = item.UUID.ToString() }; simpleLayoutPanel1.Controls.Add(pb); adaptProperties(item); } else if (e.ListChangedType == ListChangedType.ItemChanged) { var item = (VideoItem)((IList)sender)[e.NewIndex]; adaptProperties(item, e.PropertyDescriptor.Name); } propertyGrid1.Refresh(); }