WPF GUI饿死网络消息

时间:2013-05-18 20:35:40

标签: c# .net wpf

我正在使用Blend / XAML开发基于Window7,C#/ WPF的GUI,我想展示从视频通话的RTP流中获得的H.264视频。我正在使用基于C的开源库来进行视频通话。我创建了一个非托管代码DLL,它使用这个基于C的库来进行视频调用。从WPF GUI到DLL的P-INvoke工作正常。

但是我注意到WPF GUI正在使用于拨打电话和发送/接收网络消息的网络线程挨饿。有办法解决这个问题吗?请记住,我正在为wpf GUI使用XAML(而不是代码)。

1 个答案:

答案 0 :(得分: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。