我有一个使用我创建的 DLL 的多线程应用程序。如果 DLL 尚未运行某个函数,则某个函数将失败。如何确保运行此应用程序函数的线程在继续之前等待该 DLL 函数完成?
可视化:
O = DLL 函数完成
T = 应用程序功能启动
应用程序线程:-------------O-------------------------------- --
DLL 线程:----------T------------ --
我有一个使用我创建的 DLL 的多线程应用程序。如果 DLL 尚未运行某个函数,则某个函数将失败。如何确保运行此应用程序函数的线程在继续之前等待该 DLL 函数完成?
可视化:
O = DLL 函数完成
T = 应用程序功能启动
应用程序线程:-------------O-------------------------------- --
DLL 线程:----------T------------ --
几种方法:
您可以使用命名事件。
为应用程序和 DLL 创建一个事件以首先共享:
HANDLE myEvent = CreateEvent(NULL, false, false, L"MyEvent");
发出完成使用的信号:
SetEvent(myEvent);
等待完成使用:
WaitForSingleObject(myEvent, INFINITE);