关于VB ActiveX EXE 的一个简单问题!
问题原因:在我的主程序中使用了一个Winsock控件发送数据,然而每当数据未发送成功或未发送完成时,主程序是处于假死状态---动不了。于是我想到用ActiveXEXE做子...
问题原因:在我的主程序中使用了一个Winsock控件发送数据,然而每当数据未发送成功或未发送完成时,主程序是处于假死状态---动不了。于是我想到用ActiveX EXE做子线程。
首先声明:我对ActiveX EXE知道得很少,在网上见到说可以用ActiveX EXE来做多线程程序。我做了以下例子:
新建了一个 ActiveX EXE Sock ,Class 命名 SockSend
Dim A As Object
Sub Send(ByVal Port As Long, ByVal IP As String, ByVal S As String)
On Error Resume Next
Set A = CreateObject("MSWinsock.Winsock")
A.Protocol = sckUDPProtocol
A.RemoteHost = IP
A.RemotePort = Port
A.SendData S
Set A = Nothing
End Sub
编译后在新工程中这样调用:
Private Sub Command1_Click()
Set A = CreateObject("Sock.SockSend")
A.Send 1024,"****","****"
End Sub
我测试的目地是:单击 Command1 后,执行内部语句,当执行A.Send 1024,"****","****" 后直接跳到下一句 End Sub 而不用等待 A.Send 1024,"****","****" 结束. 可是失败了, 在End Sub 前始终要等待3秒钟,我知道 这是在等待ActiveX EXE 执行完.
问题:我要怎样才能让ActiveX EXE不占用我的主线程时间呢? 展开
首先声明:我对ActiveX EXE知道得很少,在网上见到说可以用ActiveX EXE来做多线程程序。我做了以下例子:
新建了一个 ActiveX EXE Sock ,Class 命名 SockSend
Dim A As Object
Sub Send(ByVal Port As Long, ByVal IP As String, ByVal S As String)
On Error Resume Next
Set A = CreateObject("MSWinsock.Winsock")
A.Protocol = sckUDPProtocol
A.RemoteHost = IP
A.RemotePort = Port
A.SendData S
Set A = Nothing
End Sub
编译后在新工程中这样调用:
Private Sub Command1_Click()
Set A = CreateObject("Sock.SockSend")
A.Send 1024,"****","****"
End Sub
我测试的目地是:单击 Command1 后,执行内部语句,当执行A.Send 1024,"****","****" 后直接跳到下一句 End Sub 而不用等待 A.Send 1024,"****","****" 结束. 可是失败了, 在End Sub 前始终要等待3秒钟,我知道 这是在等待ActiveX EXE 执行完.
问题:我要怎样才能让ActiveX EXE不占用我的主线程时间呢? 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询