我在vb中用CreateThread创建线程并运行正常,但make成exe后就说非法内存操作。还有在vb中运行时,我创建线程后就关不掉该程序了,用TerminateThread关掉后,也一样无法停止该程序。只有用任务管理器关,但一关该程序后,vb也自动关闭了。
请大家指点!

解决方案 »

  1.   

    建议不要使用createthread函数。你可以用com对象和activeEXE去模拟多线程,具体的程序例子,等我晚上回家找给你吧。但这种方式下的多线程并不是现在98、2000下windows的那种多线程的模式,而是以一种轮询的机制去模拟的,虽然可以从一定程度上满足多线程的需求,但效率并不是很高。我曾经模拟用这种方式实现过一种远程访问用的数据库组件,客户端接口模拟ado的接口,服务器端创建了一个服务,通过tcp端口处理来自客户端的请求。测试效率时,测试的SQL命令所返回的结果集一般在几十k左右(未经过压缩的),测试结果,在一台512M内存、p4 1.6的pc上,单机情况下(服务器、客户端在一起),大约可以接受40~50个不间断请求;以上面那台机子作服务器,客户端采用多台机子并发请求,大约可以介绍200个客户的不间断请求。程序本身存在效率问题,彻底改正之后估计还可以提升20%左右,但我估计如果换成VC来作的话,至少可以进行2、3倍的提升。
      

  2.   


     一句话:  VB6 不支持自由线程操作, 还是升级到VB.NET吧.
      

  3.   

    用类型库把createthread及所有用到的api包括在里面,就可以make成exe,不会非法操作
      

  4.   

    用VB去调这种基于API也好、基于ActiveExe也好的多线程程序,我记得MSDN中都有一句话就是要求不能在开发环境下进行,所以,恐怕也没有什么好办法了。