Пример #1
0
 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;
         }
     }
 }
Пример #2
0
 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();
 }