私のアプリケーションは、ネットワークカメラからの多くのビデオを表示するには、WPFコントロールを使用しています。UIスレッドは応答しますか?
要約コードは、Iカメラの量(> 15カメラ)が大きい場合は、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]
}
}));
}
}
未満です。
私は多くのカメラの映像を表示するときにUIスレッドが重い作品を知っています。しかし、私はそれを改善する方法を知らない。誰かがこの問題を解決する方法を教えてくれます。
多くの感謝!
はそれが遅い描画ますか?それとも「サーブする?そのペイロードは、UIスレッドで実行されるため –
あなた 'DisPlayVideoThreadProc'は、役に立たないです。 'bitmapQueue [i] .Serve()'コードを投稿してください。 – Dennis
ディスパッチャアクションからBitmapSourceの作成をスレッドメソッドに移動することができます。単に 'img.Freeze()'を呼び出すことによってビットマップソースが固定されていることを確認してください。 – Clemens