老马的这个多线程序,如何动态创建呢?
<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> </p>
<p>每次只能在程序中使用固定的线程郁闷。</p>
<p> </p>
<p>而且如果把<font face="Verdana">Set i = CreateObject("MT.CMT")</font></p>
<p>这个代码放到过程中加载 新线程序中多少还会出现一些问题。</p>
<p>所以我只有把这个代码放到 form load 的过程中</p>
<p>但是有个问题,也就是说 i这个线程序不能关闭,若关闭了再调用又不行了,难道只有让窗体重新载入一次么?</p>
<p> </p>
【讨论】
<p>我按照你说的做了一遍,呵呵,还是好用~~,msgbox 不停止timer控件也不停止mscomm</p> <p>汗一个.</p><p> </p>
<p>还真是.</p>
<p> </p>
<p>而且发现,只要是以ActiveX ExE编译,那么TIMER控件就不会被MSGBOX挂起,而无论是否在另一线程内.</p>
<p> </p>
<p>这个会很有用......</p> <p><font face="Verdana">你可以先定义一组对象数组:</font></p>
<p><font face="Verdana"></font> </p>
<p><font face="Verdana">dim threadArr() as mT.CMT</font></p>
<p><font face="Verdana"></font> </p>
<p><font face="Verdana">然后用CreateObject来动态创建即可. </font></p> <p>我也看到这个了,不是太明白怎么创建N个线程,盼望详解!</p> <p>发现新开线程的那个窗体,如果用msgbox弹出对话框时,对话框拦截不了mscomm控件的接受事件和时钟的timer事件,哈哈,不错,以后就用这个了,数据采集和其它处理分离……</p> <p>新开的线程的MSGBOX只能挂起当前线程。</p>
<p> </p>
<p>对于别的线程是不行的。</p>
<p> </p>
<p>只要你的控件放在别的线程,那么就不怕了。</p> <p>不是,我的mscomm控件也在新开的窗体(线程?)里,也没让同窗体的msgbox给停住呀!</p> <p>这么怪?</p>
<p> </p>
<p>你试下用一个定时器每秒改变标题为当前时间,再在一个按钮里触发一个MSGBOX看看定时器还走不......</p>
<p> </p>
<p>除非MSCOMM控件的机制与定时器机制不同.....</p> <p>只要是ActiveX ExE编译,timer就不会被MSGBOX挂起么?ActiveX ExE编译与正常编译的差别在哪里呢?</p> <p>具体不太清楚.</p>
<p> </p>
<p>从MSDN里的说明来看,有可能是因为"每个对象使用一个线程"的原因.</p>
<p> </p>
<p>如果一些控件创建时使用的是类似CreateObject的机制,那肯定就在另一线程里了.</p>
<p> </p>
<p>我猜想这种可能性比较高.</p> <p>不太懂了,我功力还不够,研究不了了</p>
页:
[1]