我在一个进程中有很多线程都调用了DLL中的函数,现在我想FreeLibrary这个动态库。可是怎么知道这个DLL有没有被别的线程使用。我做了一个试验,如果有线程在使用DLL中的函数时强行FreeLibrary动态库,系统会报错的。
解决方案 »
- 关于CMFCTasksPane 响应鼠标切换消息的问题
- 怎么定义一个类后,传进指定的函数参数类型啊?
- 用VC6.0实现基于对话框的保存图片的功能(添加一个保存图片按钮)
- 如何将ListCtrl中的表格数据逐行读入txt文本
- 关于这类错误,不解中....
- 如何判断系统的时间是24小时制还是12小时制并如何更改系统的时间制!
- 请教各位大虾
- 出现“'IDR_TOOLBAR1' : undeclared identifier”的错误怎么调试??
- TCP/IP协议,winpcap发包问题
- 请问怎样将两个CString类的字符串相加成为一个字符串(CString类)
- 高分求新版QQwry.dat文件格式!
- 代码无误,为什么不能修改??
或者将handle作为全局变量,只装载一次
因为我的业务应用要求经常更新动态连接库,但是又不能停止进程。因此,我准备在更新时候先把链接库换个文件名,然后调用LoadLibrary获得一个新句柄,接着用新句柄替换老的句柄。这样可以保证正在引用动态链接库的线程不会受到影响。最后我要把老的句柄释放掉,可是我却不知道那个老的链接库是不是还在被别的线程引用阿。
回Skt32(荒城之月):
如果还有别的线程正使用动态链接库中的函数,直接释放的话,系统会报错的。
有的时候,我们开发了一套很有市场价值的软件,可是发觉市场销售量却很低,原来真正的原因是软件的包装不够漂亮。公司采取各种渠道来解决问题。招聘大量的美工人员,可是,却发觉程序员的水平跟不上步伐,专门设立一个研究部门,却发觉需要花费巨额的人力物力,采用第三方控件吧,却要支费大量的注册费用或者版权使用费用,而且一般都以动态链接库*.DLL 或者控件*.OCX 绑定到我们的软件中。并且,控件功能扩展需要花费一定的升级费用才能够实现。您希望一次花费为数不多的费用就能弥补所有的不足吗...皮肤类不以任何形式的控件*.OCX,动态链接库*.DLL出售给用户,所以,你不必担心是否以源代码的方式出售给用户
皮肤工作室皮肤类(VC开发企业版)暑假期间正在热销中,优惠活动截至到2003.9月。售价仅仅人民币500元整(终身使用版权);并且,在功能上可以任意扩展,真可谓手到擒来。具体包括皮肤对话框,皮肤按扭,皮肤进度条,皮肤控制条,皮肤动画标签类,皮肤面版类... 全部功能都以源代码的方式出售,使你可以制作真正意义上的具有自主版权皮肤功能的软件,还在等什么,赶快行动吧!!!
真正令我们心动的时刻到了,同时随送的一些经典皮肤示例源代码包括多彩取色机XP,鼠标记录机,多彩影音伴侣等等
你如果希望购买我们的产品,请到我们网站的购买方式页面 http://www.skin-studio.com/bankcard.htm了解更多信息
int m_iDllCount = 0;
#pragma data_seg()int GetDllRefenceCount()
{
return m_iDllCount;
}
//
// DLL 入口函数,对DLL调用次数进行统计。
//
BOOL WINAPI DllMain(
HINSTANCE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
if(ul_reason_for_call == DLL_PROCESS_ATTACH)
{
InitializeCriticalSection(&gCriticalSection);
EnterCriticalSection(&gCriticalSection);
{
m_iDllCount ++;
}
LeaveCriticalSection(&gCriticalSection); }
else if(ul_reason_for_call == DLL_PROCESS_DETACH)
{
EnterCriticalSection(&gCriticalSection);
{
m_iDllCount -- ;
}
LeaveCriticalSection(&gCriticalSection); } return TRUE;
}建立一个全局的计数器,Attach时加,Detach时减。导出GetDllRefenceCount函数,如果得到的值为零,^_^,不就可以了Free了??
#pragma data_seg(".inidata")
int m_iDllCount = 0;
#pragma data_seg()
这样写在所有调用线程中只有一个m_iDllCount存在。