0

我有一些工作,但我不确定它是否正常,以及它是否会在以后引起问题。

我有一个 Win32 C++ 应用程序,它进行一些视频处理并使用 Direct3D 进行显示(不是我的代码)。我的任务是用 C# GUI 替换 GUI。

我已经将 C++ 代码变成了一个 dll。我在 C# 中创建了一个 GUI,并有一个用于视频显示的面板。我将此面板的 HWND 传递给 dll,一切似乎都运行良好。

但是 - 该面板正在被创建它的线程以外的线程访问,这是不应该做的。
我的一部分想要“独自离开”,但这感觉不对,我怀疑这会导致问题。例如,当我们想要在面板上捕获点击事件时,这将在主线程或 UI 线程上......创建面板。

关于我应该如何做到这一点的任何建议?谢谢谢谢

4

2 回答 2

2

我想你已经知道这个问题的答案了。Windows 具有线程关联性。窗口上的所有操作都应该从创建它的线程中执行。

鉴于此规则,我无法想象 DLL 负责将窗口访问移动到不同的线程并假设是您的代码执行此操作。解决方案是让您在调用 DLL 的同一线程中创建和访问窗口。

于 2011-11-19T21:39:17.550 回答
0

我使用这种技术看到的主要问题是您的 UI 可能会闪烁。如果您在使用 WPF 的过程中足够早,您可能想看看D3DImage如果不是您现在正在做的大部分工作。

于 2011-11-19T21:37:01.733 回答