我正在编写一些托管代码来包装对IntervalZero 的 RTX 产品的本机调用。RTX 基本上是通过设置内核代理来实现 Windows 下的实时编码。这里重要的是,当使用 DLL_THREAD_ATTACH调用 DllMain时,RTX 会生成代理(并在 DLL_THREAD_DETACH 上将其拆除)。如果尚未生成该代理并且您调用库,您会立即获得BSOD。
好吧,我有 99.9% 的把握,当mstest.exe运行它的单元测试时,它会使用 ThreadPool 类将它们排队(这是唯一解释这种行为的东西)。不幸的是,线程在 RTX 库加载之前就已经创建了,所以 DllMain 永远不会被调用,RTX 子系统也不知道它的存在,所以当单元测试试图调用库时,事情就会被撤消.
我真的需要能够在这些东西上运行单元测试,这样我才能获得合理的、可自动化的测试覆盖率。有没有办法告诉 mstest 在运行时为每个测试生成一个新线程?我知道这样做通常会慢一些,但它仍然比蓝屏后恢复要快得多。