精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓.开发和相关文档.〓〓>>技巧:在VB中实现多线程

主题:技巧:在VB中实现多线程
发信人: fishy()
整理人: fishy(2000-05-12 12:33:41), 站内信件
发信人: seamus (seamus), 信区: VB 
标  题: Re: 请问如何在VB实现多进程编程? 
发信站: 武汉白云黄鹤站 (Sun May  7 20:08:22 2000), 站内信件 
  
VB中实现多线程只能用ActiveX EXE。 
不要用CreateThread和AddressOf,除非你开的线程中不访问 
Form和TextBox及其他任何控件,否则程序必Crash无疑。这跟 
VB的机制有关,VB中的任何控件包括Form等都是基于COM的, 
任何线程要访问COM Object,都必须先用CoInitialize初始化, 
然后才能进入包含COM Object的Apartment中对COM Oject的属 
性和方法进行访问。当然你也可以在你的线程中把CoInitialize 
写进去,它是一个api,在ole32.dll中,但接下来你怎么办?你 
还需要对interface中方法marshal出来才能用,除非你对COM的机 
理很熟,否则这些工作对你来说负担太重了,也违背了VB这种开发 
工具的本意。VB7据说可以用new thread来产生一个新线程,我想它 
无非是把上面这部分工作给hide起来了,原理上应该不会有太多的 
出入。 
ActiveX EXE能实现多线程,是因为它的property中有个Thread Model 
设置,你可以把它设为thread per object,这项设置意味着你可以在 
工程中CreateObject或new一个基于新线程的对象。如果你的新线程中 
含有GUI或msgbox等东西,可能还需要一些特别的技巧和设置,当然也 
是能做的。 

外面有很多关于VB的站点上提供了VB中实现多线程的SourceCode,都 
用的是CreateThread,我以前也是这么做的,现在我发现我错了,而且 
他们也都错了,我敢肯定。 
  
【 在 Rockor (LazyTiger) 的大作中提到: 】 
: 请问如何VB中实现多进程编程? 
  
  
-- 
※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 202.120.19.2]

--
Dim fishy As Friend
回复时请打勾
------------
欢迎大家访问酷码工作室:http://comma.yes8.com

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.114.45.114]

[关闭][返回]