コード例 #1
0
ファイル: AVICache.cs プロジェクト: yoykiee/ShareX
        private void StartConsumerThread()
        {
            if (!IsWorking)
            {
                IsWorking = true;

                Helpers.CreateDirectoryIfNotExist(OutputPath);

                AVIWriter aviWriter = new AVIWriter(OutputPath, FPS, Size.Width, Size.Height, ShowOptions);

                task = TaskEx.Run(() =>
                {
                    try
                    {
                        position = 0;

                        while (!imageQueue.IsCompleted)
                        {
                            Image img = null;

                            try
                            {
                                img = imageQueue.Take();

                                if (img != null)
                                {
                                    //img.Save("Test\\" + position + ".bmp", ImageFormat.Bmp);
                                    aviWriter.AddFrame((Bitmap)img);
                                    position++;
                                }
                            }
                            catch (InvalidOperationException)
                            {
                            }
                            finally
                            {
                                if (img != null)
                                {
                                    img.Dispose();
                                }
                            }
                        }
                    }
                    finally
                    {
                        IsWorking = false;

                        if (aviWriter != null)
                        {
                            aviWriter.Dispose();
                        }
                    }
                });
            }
        }
コード例 #2
0
        private void StartConsumerThread()
        {
            if (!IsWorking)
            {
                IsWorking = true;

                task = TaskEx.Run(() =>
                {
                    try
                    {
                        position = 0;

                        while (!imageQueue.IsCompleted)
                        {
                            Image img = null;

                            try
                            {
                                img = imageQueue.Take();

                                if (img != null)
                                {
                                    //using (new DebugTimer("Frame saved"))
                                    aviWriter.AddFrame((Bitmap)img);
                                    position++;
                                }
                            }
                            catch (InvalidOperationException)
                            {
                            }
                            finally
                            {
                                if (img != null)
                                {
                                    img.Dispose();
                                }
                            }
                        }
                    }
                    finally
                    {
                        IsWorking = false;
                    }
                });
            }
        }
コード例 #3
0
ファイル: AVICache.cs プロジェクト: savannaking/ShareX
 protected override void WriteFrame(Image img)
 {
     aviWriter.AddFrame((Bitmap)img);
 }