关于线程的问题 急用 在线等 高分
事情是这样的 ,我想完成大型数据的录入工作。包括对文件的存取 我是一行一行的读入。刚开始我对数据库的存取是在主线程里实现的。做过相关工作的可能知道, 当数据库录入的时候,主线程没有反映跟死机了似的 直到数据处理完毕后(大概10分钟左右)才有反映。刚开始我以为,把对数据的存储放在,子线程 一切就OK了。
我创建的线程如下
MainThread()
{
SubThread *p=new SubThread(false);
}
SubThread(...)
{
Process()
{
//大量数据的录入
}
void Execute()
{
Synchronize(Process);
}
}
可是我使用线程的情况跟不使用线程的情况是一样的 当数据处理的时候 主线程依然没有反映
我以为是文件读取延迟的速度可以我吧数据库的操作注释掉之后 发现 对文件的处理时间是很短的
我又有新的疑问是不是子线程的优先级太高了 使得主线程 对用户的响应 得不到处理啊
个人感觉这个疑问有点傻 本人新手 还请各位大侠 帮忙啊
[解决办法]
版主好
我想请教一下在将大量数据录入数据库时,一般是走什么流程呢?
[解决办法]
使用线程同样占用资源,如果数据一次处理比较多依然会出现当机
[解决办法]
Synchronize你用了这个,说明你频繁更新了界面,这样实际上子线程嵌入到了主线程执行,效果一样。
你需要减少或避免在子线程里炒作界面。
[解决办法]
楼主加了与没加子线程一样。Synchronize的作用是吧代码放在主线程内执行。
应该把代码中,需要操作VCL相关组件时,用Synchronize来执行。
另外多线程操作数据库用ADO的话,注意线程同步。ADO不是线程安全的。