一个困扰我多时的DLL调用与线程开启问题
本人做了一个DLL 函数原形为
void CheckKey( void *dummy )
{
_endthread();
}
long MsgSend()
{
beginthread(CheckKey, 0, NULL );
return 0;
}
我以下面的三种顺序
1:
LoadLibrary
重复调用三次MsgSend方法
FreeLibrary
2:
LoadLibrary
调用MsgSend方法
FreeLibrary
LoadLibrary
调用MsgSend方法
FreeLibrary
LoadLibrary
调用MsgSend方法
FreeLibrary
3:
LoadLibrary
调用MsgSend方法
LoadLibrary
调用MsgSend方法
FreeLibrary
LoadLibrary
调用MsgSend方法
FreeLibrary
以上三种调用顺序十分奇怪的是只有第二种调用顺序会出现access violation错误
而当我把MsgSend方法调整为
long MsgSend()
{
beginthread(CheckKey, 0, NULL );
Sleep(100);
return 0;
}
这样以后,三种调用顺序居然全部正常,请哪位大虾能告诉我这究竟是为什么吗?