everyone 发表于 2009-1-7 10:00:27

老马的这个多线程序,如何动态创建呢?

<p><font face="Verdana"><a href="http://www.m5home.com/blog/article.asp?id=54">http://www.m5home.com/blog/article.asp?id=54</a></font></p>
<p>&nbsp;</p>
<p>每次只能在程序中使用固定的线程郁闷。</p>
<p>&nbsp;</p>
<p>而且如果把<font face="Verdana">Set i = CreateObject("MT.CMT")</font></p>
<p>这个代码放到过程中加载 新线程序中多少还会出现一些问题。</p>
<p>所以我只有把这个代码放到 form load 的过程中</p>
<p>但是有个问题,也就是说 i这个线程序不能关闭,若关闭了再调用又不行了,难道只有让窗体重新载入一次么?</p>
<p>&nbsp;</p>

beixue 发表于 2009-3-14 14:29:06

【讨论】

<p>我按照你说的做了一遍,呵呵,还是好用~~,msgbox 不停止timer控件也不停止mscomm</p>

马大哈 发表于 2009-3-14 14:39:05

<p>汗一个.</p>
<p>&nbsp;</p>
<p>还真是.</p>
<p>&nbsp;</p>
<p>而且发现,只要是以ActiveX ExE编译,那么TIMER控件就不会被MSGBOX挂起,而无论是否在另一线程内.</p>
<p>&nbsp;</p>
<p>这个会很有用......</p>

马大哈 发表于 2009-1-7 22:56:37

<p><font face="Verdana">你可以先定义一组对象数组:</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">dim threadArr() as mT.CMT</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">然后用CreateObject来动态创建即可. </font></p>

beixue 发表于 2009-3-7 13:57:44

<p>我也看到这个了,不是太明白怎么创建N个线程,盼望详解!</p>

beixue 发表于 2009-3-7 15:57:15

<p>发现新开线程的那个窗体,如果用msgbox弹出对话框时,对话框拦截不了mscomm控件的接受事件和时钟的timer事件,哈哈,不错,以后就用这个了,数据采集和其它处理分离……</p>

马大哈 发表于 2009-3-12 13:33:00

<p>新开的线程的MSGBOX只能挂起当前线程。</p>
<p>&nbsp;</p>
<p>对于别的线程是不行的。</p>
<p>&nbsp;</p>
<p>只要你的控件放在别的线程,那么就不怕了。</p>

beixue 发表于 2009-3-13 09:57:23

<p>不是,我的mscomm控件也在新开的窗体(线程?)里,也没让同窗体的msgbox给停住呀!</p>

马大哈 发表于 2009-3-13 16:32:09

<p>这么怪?</p>
<p>&nbsp;</p>
<p>你试下用一个定时器每秒改变标题为当前时间,再在一个按钮里触发一个MSGBOX看看定时器还走不......</p>
<p>&nbsp;</p>
<p>除非MSCOMM控件的机制与定时器机制不同.....</p>

beixue 发表于 2009-3-16 08:13:10

<p>只要是ActiveX ExE编译,timer就不会被MSGBOX挂起么?ActiveX ExE编译与正常编译的差别在哪里呢?</p>

马大哈 发表于 2009-3-16 16:36:59

<p>具体不太清楚.</p>
<p>&nbsp;</p>
<p>从MSDN里的说明来看,有可能是因为"每个对象使用一个线程"的原因.</p>
<p>&nbsp;</p>
<p>如果一些控件创建时使用的是类似CreateObject的机制,那肯定就在另一线程里了.</p>
<p>&nbsp;</p>
<p>我猜想这种可能性比较高.</p>

beixue 发表于 2009-3-17 08:21:26

<p>不太懂了,我功力还不够,研究不了了</p>
页: [1]
查看完整版本: 老马的这个多线程序,如何动态创建呢?