WPF应用程序中的文本输入速度非常慢

时间:2017-03-22 06:23:37

标签: wpf

我有一个简单的WPF应用程序,我在其中打开网络摄像头并将其设置为每秒30帧,如下所示:

 webcam = new WebCamCapture();
 webcam.FrameNumber = ((ulong)(0ul));
 webcam.TimeToCapture_milliseconds = FrameNumber;
 webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);

此应用程序在ImageControl中显示相机预览(每秒30帧)。

在图片框下方,我是一个TextBox

<TextBox Name="txtMsg" HorizontalAlignment="Left" Width="214" Height="22" Margin="0,260,0,0" TextWrapping="Wrap" VerticalAlignment="Top"></TextBox>

现在,当我尝试输入文本框时,需要几秒钟才能回复。有时我按键几次,但没有得到回应。如果我延迟相机捕捉事件(例如每秒1帧),它可以正常工作。

我的问题是我如何经常更新UI,但同时在TextBox中获得快速响应。

感谢。

1 个答案:

答案 0 :(得分:1)

网络摄像头对象正在UI Thread中运行。以下是一个示例,如何在单独的Thread中启动它。请注意,因为ImageCaptured事件是在后台Thread中触发的,因此您必须调用Dispatcher

private void _StartWebCam()
{
    ThreadStart webCamThreadStart = () =>
    {
        webcam = new WebCamCapture();
        webcam.FrameNumber = ((ulong)(0ul));
        webcam.TimeToCapture_milliseconds = FrameNumber;
        webcam.ImageCaptured += new WebCamCapture.WebCamEventHandler(webcam_ImageCaptured);
    };
    Thread threadnameThread = new Thread(webCamThreadStart) { IsBackground = true };
    threadnameThread.Start();
}

private void webcam_ImageCaptured(object sender, EventArgs eventArgs)
{
    System.Windows.Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
    {
        //Set you captured Image to your ImageControl
    }));
}