VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
楼主: tgy

[讨论] *再谈VB多线程和标准DLL问题*

  [复制链接]
发表于 2011-11-16 20:54:42 | 显示全部楼层
mk
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-11-29 16:57:19 | 显示全部楼层
本帖最后由 tgy 于 2011-11-29 16:58 编辑
sexfio 发表于 2011-10-31 18:01
满好的,开了100个线程没出啥问题,对了,怎么样能把那个模块里的XXX调用搞到主窗体里去?


终于把线程函数搞到窗体中去了,不用写在标准模块中了,写到类事件中,呵呵,详见:
http://www.vbgood.com/forum.php? ... &fromuid=231244
回复 支持 反对

使用道具 举报

发表于 2011-11-30 22:07:46 | 显示全部楼层
它DLL不开源。

点评

tgy
我已经说过了,DLL中的核心源码都是这个贴子里面的源码.  发表于 2011-11-30 22:14
回复 支持 反对

使用道具 举报

发表于 2011-12-12 23:31:26 | 显示全部楼层
傻时候能公开下代码呢?呵呵,那样用起来安心一点
回复 支持 反对

使用道具 举报

发表于 2011-12-16 23:04:47 | 显示全部楼层
本帖最后由 sexfio 于 2011-12-16 23:05 编辑

'窗体

Dim fio() As CreateThread_TGY

Private Sub Command1_Click()
    Dim i&
    ReDim fio(1)
    For i = 0 To UBound(fio)
        Set fio(i) = New CreateThread_TGY
        fio(i).VBcreatethread AddressOf HD, 0, 0, 0, 0
    Next
End Sub

Private Sub Form_Unload(Cancel As Integer)
    For i = 0 To UBound(fio)
        fio(i).endthread
        Set fio(i) = Nothing
    Next
End Sub

'摸块

Sub Main()
    Form1.Show
End Sub

Sub HD(ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long)
    Dim x$, xmlhttp As Object
    sUrl = "http://www.baidu.com/"
    Set xmlhttp = CreateObject("msxml2.serverxmlhttp")
    xmlhttp.open "GET", sUrl, True
    xmlhttp.send
    x = xmlhttp.responsetext
    xmlhttp.abort: Set xmlhttp = Nothing
    MsgBox x
End Sub

结果会卡死,什么原因??

点评

tgy
或者把form1的位置改成默认,不要居中  发表于 2011-12-18 12:26
tgy
main函数改成: If Form1.Visible = False Then form1.show  发表于 2011-12-18 12:23
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-17 19:17:15 | 显示全部楼层
本帖最后由 tgy 于 2011-12-17 19:37 编辑

回复“sexfio”

请先确保你会正确使用xmlhttp ,你这个线程函数,只用主线程都无法运行,就不要谈在新线程中运行了。

已修改为同步方式调用xmlhttp ,使用正常



'窗体

Dim fio() As CreateThread_TGY
[/quote]

Sub HD(ByVal a As Long, ByVal b As Long, ByVal c As Long, ByVal d As Long)
    Dim x$, xmlhttp As Object
    sUrl = "http://www.baidu.com/"
    Set xmlhttp = CreateObject("msxml2.serverxmlhttp")
    xmlhttp.open "GET", sUrl, false   
xmlhttp.send
    x = xmlhttp.responsetext
    xmlhttp.abort: Set xmlhttp = Nothing
    MsgBox x
End Sub

回复 支持 反对

使用道具 举报

发表于 2011-12-17 20:26:05 | 显示全部楼层
本帖最后由 sexfio 于 2011-12-17 20:26 编辑
tgy 发表于 2011-12-17 19:17
回复“sexfio”

请先确保你会正确使用xmlhttp ,你这个线程函数,只用主线程都无法运行,就不要谈在新线 ...


那个是我打错了而已,我原来就是用false,一样卡死,和true,false无关,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-17 20:32:58 | 显示全部楼层
本帖最后由 tgy 于 2011-12-17 20:37 编辑
sexfio 发表于 2011-12-17 20:26
那个是我打错了而已,我原来就是用false,一样卡死,和true,false无关,


在我边用false 正常得很,下面是11个线程的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2011-12-17 21:02:59 | 显示全部楼层
你把换成true 然后用while xmlhttp.readystate <> 4  delay 100 看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-17 21:28:23 | 显示全部楼层
sexfio 发表于 2011-12-17 21:02
你把换成true 然后用while xmlhttp.readystate  4  delay 100 看看

多线程就没必要使用异步了,且异步只能通过回调来返回执行状态,麻烦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-6-29 03:06

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表