我的應用程序使用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