我有一些工作,但我不确定它是否可以,以后是否会引起问题。
我有一个Win32 C ++应用程序,可以进行一些视频处理并使用Direct3D进行显示(而不是我的代码)。我的任务是用C#GUI替换GUI。
我把C ++代码变成了一个dll。 我在C#中创建了一个GUI,并有一个用于视频显示的面板。我将这个面板的HWND传递给了dll,一切似乎都运行得很好。
但是 - 该面板正在被创建的线程以外的线程访问,不应该这样做 我的一部分想“单独留下”,但这感觉不对,我怀疑它会导致问题。例如当我们想要在面板上捕获click事件时,它将在主线程或UI线程上...创建面板。
关于我应该怎么做的任何建议? 谢谢 感谢
答案 0 :(得分:2)
我想你已经知道答案了。 Windows具有线程关联性。窗口上的所有操作都应该从创建它的线程中执行。
根据这个规则,我无法想象DLL负责将窗口访问移动到另一个线程上,并假设它是你的代码。解决方案是您在调用DLL的同一线程中创建和访问窗口。
答案 1 :(得分:0)
我用这种技术看到的主要问题是你的UI会闪烁。如果您在使用WPF的过程中处于足够早的状态,您可能需要查看D3DImage,如果不是,您现在正在做的事情将主要起作用。