讨教TR@SOE 一个IB的问题

daydayup234 2005-12-07 04:46:51
为什么这么慢?我作成了许多个使用IB的dll。
每个dll中使用了一个主窗体,一个DMOD数据模块,
模块中用到控件,我使用了不同的“事务”多个。
运行能够,但是
EXE调用Dll时总很慢,让人很尴尬,即便用Local IB连接
也一样。是不是要个什么样的 连接池 什么的就好了。

//////////////////////////////////////////////////////////////////////////////
在EXE主程序中
void __fastcall Tmain_::ActionSHOWEditSimpleTableExecute(TObject *Sender)
{
try
{
DYNloadDll("DLL13.dll");
}
catch(...)
{
return;
}
}


DYNloadDll如下
void Tmain_::DYNloadDll(AnsiString dllName)
{
HINSTANCE DLLhandle;
try
{
DLLhandle=::LoadLibrary(dllName.c_str());
//典型动载,动载的标志:::LoadLibrary与::FreeLibrary
//不要 Project/Add to Project (“dllName”.lib)
// 动载可能的使用 ::LoadIcon或::LoadString或函数指针和::GetProcAddress
// 这里是 函数指针typedef void(__stdcall* pFvoid_void)()和::GetProcAddress

if(DLLhandle)
{
pFunc=(pFvoid_void)::GetProcAddress(DLLhandle,"ShowMe");
if(pFunc)pFunc();
pFunc=NULL;
}
::FreeLibrary(DLLhandle);
}
catch(Exception &e)
{
ShowMessage(e.ClassName());
ShowMessage(e.Message);
pFunc=NULL;
if(DLLhandle)::FreeLibrary(DLLhandle);
return;
}
}
//////////////////////////////////////////////////////////////////////////////
DLL13.dll是这样做:
入口 DLLEnter.h 如下:
#include "main.h"
#ifndef DLLEnterH
#define DLLEnterH
extern "C" __declspec(dllexport) __stdcall void ShowMe();
#endif
入口 DLLEnter.cpp 如下:
#pragma hdrstop
#include "DLLEnter.h"
#pragma package(smart_init)
void __stdcall ShowMe()
{
Application->CreateForm(__classid(TDMOD_), &DMOD_);
Application->CreateForm(__classid(Tmain_), &main_);
main_->ShowModal();
main_->Free();
DMOD_->Free();
}
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayup234 2005-12-13
  • 打赏
  • 举报
回复
慢是哪里慢?是数据处理慢?还是DLL来回调用、释放的开销太大?

我把每个Dll“放”进了EXE的主界面的菜单里。在打开菜单时,启动了IB库,
原则上每关一个菜单,就关闭了一次IB库,打开另外一个菜单,就重新打开了
IB库。在这个切换菜单的时候,有一个“等待”,很烦。
应该“DLL来回调用”问题,事已至此,怎样简单调整解决。



TR@SOE 2005-12-13
  • 打赏
  • 举报
回复
这个应该是由于不断打开/断开IB数据库带来的overhead,也就是额外开销。用ConnectionBroker应该可以有帮助。具体的可以参照我的书。如果没有书,给我来EMAIL:tr#netease.com.
TR@SOE 2005-12-12
  • 打赏
  • 举报
回复
慢是哪里慢?是数据处理慢?还是DLL来回调用、释放的开销太大?
罗杰斯 2005-12-11
  • 打赏
  • 举报
回复
我开始也是这样做,后来放弃了

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧