VB也是支持多线程

   
 

    虽然说VB也是支持多线程,但那只是最原始级的支持用Active X 控件实现多线程程序显示过于笨重,烦琐(VB写的程序本身就很笨重,再不力图简洁当心走不动了-:) );用Active dll,如果调用它的客户程序是单线程那做出来的程序整体上还是单线程的。后来在网上查资料说CreateThread API函数可以简单高效地来实现多线程,可使用后发现这种“移花接木”的方法真是不感恭(CreateThread本身并不是为VB设计的),因为使 CreateThread后发现在多线程对应的函数中(以下用mtProc代替)不能执行任何API函数和一些控件了,比如我在mtProc中加入一 MsgBox "time is over"消息框函数,一编译执行就出错(在VB IDE环境中运行好像到是可以的),这还了得,适应力也太差了吧。


    不管怎样,还是要把在mtProc中不能执行API的原因找出来,于是到网上搜索这方面的资料,先用baidu搜了半天没什么名堂,再用google终于在一些国外网站上发现了一些“蛛丝马迹”。
   
    因为VB是解释型语言(对应另一种是编译型语言,如VC。打个比方,领导让你写遍文章,你每写几句就拿出来给领导看一下,直到最后一句,这就叫解释型,而 如果你是一气呵成全部写完再把它呈现在领导面前,这就是编译型)。解释型每时每刻都需要领导在旁边审查文章写的是否有误,所以VB所有程序在运行时都是严 重依赖它的领导-VB RUNTIME,在VB中调用一dll中的函数,其实过程是调用先把请求发给VB RUNTIME,VB RUNTIME再调用dll中的函数。而问题来了,在mtProc中根本不能调用VB RUNTIME DLL,一调用程序就是出错崩溃(这是什么原因呢?那就要去问比尔.盖茨或他的同事了,如果你问到什么的话不防也告知大家一声)。


   怎么办呢,当然就得从问题原因下手了,想想如果能让VB执行API函数的时候不通过 VB RUNTIME而直接调用其对应的dll不就可以了吗,是的,就是这么去解决,但如何实现呢?
   使用COM来实现,这真是太棒太有创意了,因为事实证明在COM中使用API函数是可以饶过VB RUNTIME的,这就是Srideep Prasad 提出的解决之道。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值