簡體   English   中英

為什么只有我的一個事件處理程序被觸發?

[英]Why is only one of my event handlers fired?

我想同時錄制來自兩個網絡攝像頭的視頻。 我正在使用 Aforge.Video.DirectShow 包從網絡攝像頭捕獲每一幀。 我從他們網站上顯示的示例開始,然后添加了第二個攝像頭。

但我遇到的問題是只有一個用於處理新幀的事件處理程序被觸發。 在下面的示例代碼中,它是 _NewFrameHandler2。

我有一種感覺,我在這里遺漏了一些明顯的東西......

public class Camera
{
    private VideoCaptureDevice objCamera1;
    private VideoCaptureDevice objCamera2;

    public void Start()
    {
        FilterInfoCollection objVideoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
        objCamera1 = new VideoCaptureDevice(objVideoDevices[0].MonikerString);
        objCamera2 = new VideoCaptureDevice(objVideoDevices[1].MonikerString);

        objCamera1.VideoResolution = objCamera1.VideoCapabilities[objCamera1.VideoCapabilities.Count() - 1];
        objCamera2.VideoResolution = objCamera2.VideoCapabilities[objCamera2.VideoCapabilities.Count() - 1];


        objCamera1.NewFrame += new NewFrameEventHandler(_NewFrameHandler1);
        objCamera2.NewFrame += new NewFrameEventHandler(_NewFrameHandler2);

        objCamera1.Start();
        objCamera2.Start();   
    }

    public void Stop()
    {
        objCamera1.Stop();
        objCamera2.Stop();
    }


    private void _NewFrameHandler1(object sender, NewFrameEventArgs eventArgs)
    {

        Bitmap objFrame = (Bitmap)eventArgs.Frame;
        Console.WriteLine("1");
    }

    private void _NewFrameHandler2(object sender, NewFrameEventArgs eventArgs)
    {

        Bitmap objFrame = (Bitmap)eventArgs.Frame;
        Console.WriteLine("2");
    }
}

我想我已經想通了。 我在相機對象上調用 .Start() 函數之間添加了 500 毫秒的延遲。

System.Threading.Thread.Sleep(500);

現在它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM