1

Blend/XAML を使用して Window7、C#/WPF ベースの GUI を開発しており、ビデオ通話の RTP ストリームから取得した H.264 ビデオを表示したいと考えています。ビデオ通話を行うために、C ベースのオープン ソース ライブラリを使用しています。この C ベースのライブラリを使用してビデオ通話を行うアンマネージ コード DLL を作成しました。WPF GUI から DLL への P-INvoke は正常に機能します。

ただし、WPF GUI が、呼び出しやネットワーク メッセージの送受信に使用されるネットワーク スレッドを枯渇させていることに気付きました。この問題を回避する方法はありますか? wpf GUI に XAML (コードではない) を使用していることを思い出してください。

4

1 に答える 1

0

新しいデリゲートを作成し、それをアンマネージ スレッドに渡すだけです。そのような:

public delegate int PassH264Stream(byte[] buffer, int len);
public PASSH264Stream TestDelegate = {};

TestDelegate += (buffer, len) => Application.Current.Dispatcher.BeginInvoke(new Action(()
  => ReceiveInUiThread(buffer, len)), DispatcherPriority.Render);

次に、PInvoke を介して TestDelegate をアンマネージ スレッドに渡します。アイデアは、管理されていないスレッドが UI スレッドを呼び出し、UI をブロックすることなくメッセージ ループに投稿することです。

于 2013-05-19T04:35:42.170 に答える