好吧,我承认我无聊,一个VB支持多线程的DLL。。
首先,这东西原理不是原创,原理俺也不懂,俺只是封装DLL而已,原理要感谢老汉大牛。。。
在每个线程函数第一句写MTInit,就能保证线程稳定性了。。。。。
只是这个DLL提供了一些其他的线程操作导出函数,比较乱。。。
源文件下载:http://good.gd/546782.htm
DLL大小5.5K,md5:44784B7B5EF685BB3C64976B722D0CF2
[解决办法]
好吧,我承认,这个的确是多线程。文件也很小,我想使用这个DLL,但因为没见过代码,不知道安全性如何……
总之,不错,顶一个。
[解决办法]
这些api我早公布了,其实好是不稳定,在vb中使用还是会出现n多问题的。只要线程体(StartAddress)在vb内就会出问题,其实不管是CreateThread还是RtlCreateUserThread最后都是调用NtCreateThread问题的关键不是出在函数上。
[解决办法]
什么时候他能真正懂得vb6的面向对象编程了,什么时候这东西也就该扔了,就是因为他不懂所以才能弄出这东西
崩溃的问题出在对象的问题上,但出在对象的什么问题上,有几个人知道的?
真正知道的,真正的懂的,没人去弄这个了,只有那些所谓的 “牛逼的宇宙毁灭者” 才有兴趣
[解决办法]
这样折腾来折腾去,想稳定,最终还是向着单元模型靠近了......
到时搞出来的东西估计就是与单元模型差不多吧
还不如直接使用微软现成的.....
[解决办法]
不是‘假死’,是进程崩溃。
我的意思不是线程未执行完就点,而是:你等线程执行完后,又点 Command1 一下,执行完后,再继续点……
循环次次数没必要搞成10万,你改成1000甚至100都行。
还有,跟那个 MsgBox 无关吧。
还有,你那个 For循环的写法,我觉得好怪异啊,干吗要那样在循环体内对i的值进行判断呢?
过程 test() 的代码我简单修改了一下:
Public Sub test() MTInit '如果不加上这个,线程一执行就会死掉。。。 Dim i& Form1.List1.Clear 'For i = 0 To 100000 For i = 0 To 100 Form1.List1.AddItem CStr(i) Form1.Label1.Caption = i 'If i = 10000 Then MTExit Next Call MTExitEnd Sub
[解决办法]