我在Win7上使用C ++ / CLI,.net 4.5,VS2012进行编码。
我有一个主要流程 A.exe ,使用 System :: Diagnostics :: Process(:: Start()启动第二个进程 B.exe )
第二个流程 B.exe 使用(本机)DLL C.dll 。
在 C.dll 中,我声明了这样的静态:
static bool B = true;
if(B == true )
{
MyFile << "Switch true to false" << endl;
B=false;
}
MyFile << _getpid() << endl;
我得到的是_getpid()返回 A.exe 的PID,而不是 B.exe 的PID。我强硬 C.dll 会与 B.exe ,而不是 A.exe 相关联。 ???????
另外,如果我在 A.exe 中多次启动 B.exe (在循环中),则静态变量永远不会重置为true 。为什么呢?
我不知道它是否有帮助,但我使用:
StartProcessInfo.UseShellExecute = false;
StartProcessInfo.CreateNoWindow = true;
其他字段保留默认值。
有人可以帮助我吗?
谢谢!
更新1
最后, A.exe 和 B.exe 加载 C.dll 。但问题仍然存在:不应该将DLL中的静态变量映射两次,每次可执行一次?当我调用写入PID的函数时,它来自 B.exe ,因为在此期间, A.exe 等待 B.exe 完成。