如何从后台线程引发UI事件

时间:2017-03-22 13:09:06

标签: wpf

我是一个继承自UserControl类的WebCamCapture类,我在一个像这样的单独线程中启动它

    ThreadStart webCamThreadStart = () =>
    {
        webcam = new WebCamCapture();

        webcam.FrameNumber = ((ulong)(0ul));
        webcam.TimeToCapture_milliseconds = FrameNumber;

        webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);

        Start();
    };



    Thread threadnameThread = new Thread(webCamThreadStart) { IsBackground = true };
    threadnameThread.Start();

网络摄像头启动但它永远不会引发ImageCaptured事件。

当我在Dispatcher BeginInvoke下运行代码时,事件被触发,

    System.Windows.Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
                {
//above code
}));

但这不是我的目的,因为这样UI会减慢速度。我想在一个单独的线程中运行网络摄像头,这是我原来的问题

[Text Input very slow in WPF Application

我的问题是如何从后台线程中提升UI事件。

感谢。

0 个答案:

没有答案