Directx Direct3D 9创建和发布线程?

Directx Direct3D 9创建和发布线程?,directx,direct3d9,Directx,Direct3d9,我有一个使用Direct3D渲染视口的应用程序,它作为一个独立的DLL模块,与运行时链接到它的主应用程序不同。主要应用程序是一个C#程序 Direct3D设备及其资源的创建和初始化在本机DLL端完成。主C#程序仅从该DLL请求一个窗口。现在,由于主GUI循环位于C#可执行文件中,因此每当关闭/破坏视口时,它都必须调用DLL函数以请求释放相关的Direct3D设备/资源 问题是,在试图释放Direct3D设备时,程序陷入了恐慌。它说,一个不同的线程(我猜是主C#程序,因为它正在向DLL发送消息)创

我有一个使用Direct3D渲染视口的应用程序,它作为一个独立的DLL模块,与运行时链接到它的主应用程序不同。主要应用程序是一个C#程序

Direct3D设备及其资源的创建和初始化在本机DLL端完成。主C#程序仅从该DLL请求一个窗口。现在,由于主GUI循环位于C#可执行文件中,因此每当关闭/破坏视口时,它都必须调用DLL函数以请求释放相关的Direct3D设备/资源

问题是,在试图释放Direct3D设备时,程序陷入了恐慌。它说,一个不同的线程(我猜是主C#程序,因为它正在向DLL发送消息)创建了一个试图释放它的设备

有解决这个问题的办法吗?有什么想法吗

我使用的是Direct3D 9


感谢帮助。

D3D设备调用都与创建它们的线程具有线程关联性


您必须将调用封送回主D3D线程,或者使用D3DCREATE_多线程初始化设备,以便允许从多个线程使用它。

非常确定D3D9不存在该标志。@DeadMG:它存在-以下是文档:(注意页面底部的标题-“D3D9.h”…)@DeadMG:它确实会对性能产生副作用,但有时效果并不理想……事实上,在创建了带有D3DCREATE_多线程标志的设备之后,我发现了这个问题。在它崩溃之前,没有关于问题的信息。