我的应用程序使用WPF控件来显示来自网络摄像机的许多视频。保持UI线程响应?
摘要代码如下
public void DisPlayVideoThreadProc()
{
while (isDisplayThreadRunning)
{
Global.mainWindow.Dispatcher.Invoke(new Action(delegate()
{
for (int i = 0; i < numOfCamera; i++)
{
BitmapSource img = bitmapQueue[i].Serve(); //Pop the frame from Queue
ControlDisplay[i].DrawImage(img); //Draw this frame on ControlDisplay[i]
}
}));
}
}
我遇到一个问题,当相机的量较大(> 15相机),则UI线程是用于用户交互的速度很慢。
我知道UI线程在显示许多摄像头视频时工作得很厉害。但我不知道如何改进它。有人可以告诉我,如何解决这个问题。
非常感谢!
是它的图纸是慢?或者'服务'? –
你的'DisPlayVideoThreadProc'没用,因为它的有效载荷是在UI线程中执行的。请发布'bitmapQueue [i] .Serve()'代码。 – Dennis
您可以将BitmapSource创建从分派器操作移出到线程方法。通过调用'img.Freeze()'来确保BitmapSources被冻结(即跨线程可访问)。 – Clemens