如何在主窗口中显示视频播放器的辅助线程

时间:2011-05-20 12:07:18

标签: c# c++ user-interface directx

我正在创建一个视频播放器应用程序,其中包含C#中的UI和C ++中的视频解码和显示(DirectX)。

C ++代码被编译为DLL并与C#UI连接。

为了保持正确的显示帧速率,我需要在C ++ DLL或C#中创建一个辅助线程,它可以进行精确计时并以正确的间隔调用显示功能。

但是,创建一个将显示发布到主线程(来自C#GUI)创建的窗口的辅助线程会创建访问冲突并导致崩溃。

但是,如果我在C#中使用计时器对象来显示,则播放器可以工作,但由于它的粗粒度,我无法保持正确的帧速率。

处理这个问题会有什么好处?

1 个答案:

答案 0 :(得分:0)

我认为您遇到的崩溃是由于您无法从主线程外部访问Windows窗体控件而引起的。

考虑使用Control.Invoke()来调用主线程上所需的执行。

请记住Control.Invoke()使用Windows'消息队列来传递请求,所以期待一些不准确之处。