提问人:Unforgiven 提问时间:10/12/2023 最后编辑:StayOnTargetUnforgiven 更新时间:10/12/2023 访问量:95
如何使用 Chilkat 作为异步通过 VB6 从网站获取数据?
How can I use Chilkat as Async to get data from website via VB6?
问:
我想读取服务器上的文本文件的数据,并使用 Active X Chilkat 将其显示在我的程序中。我使用该方法来阅读文本,我希望使用这种方法,程序在阅读文本之前不会被锁定。但是程序被锁定,直到文本被读取和显示。Http.QuickGetObjAsync
这是我的代码:
Dim WithEvents Http As ChilkatHttp
Dim Http As New ChilkatHttp
Dim task As ChilkatTask
Set task = Http.QuickGetObjAsync("http://www.example.com/notification.txt")
If (Http.LastMethodSuccess <> 1) Then
Debug.Print Http.LastErrorText
Exit Sub
End If
success = task.Run()
If (success <> 1) Then
Debug.Print task.LastErrorText
Exit Sub
End If
Do While task.Finished <> 1
' Sleep 100 ms.
task.SleepMs 50
Loop
If (task.StatusInt <> 7) Then
Debug.Print "Task did not complete."
Debug.Print "task status: " & task.status
Exit Sub
End If
Dim resp As New ChilkatHttpResponse
success = resp.LoadTaskResult(task)
MsgBox resp.Body
If (success <> 1) Then
Debug.Print resp.LastErrorText
Exit Sub
End If
Debug.Print "status code: " & resp.StatusCode
Debug.Print "response header: " & resp.Header
success = glob.FinalizeThreadPool()
我也使用了这段代码。但似乎这个事件没有实现,也没有效果。
Private Sub http_TaskCompleted(ByVal task As Chilkat_v9_5_0.IChilkatTask)
Dim response As New ChilkatHttpResponse
Dim success As Long
success = response.LoadTaskResult(task)
If (success <> 1) Then
Debug.Print response.LastErrorText
MsgBox response.Body
Exit Sub
End If
Debug.Print response.Body
End Sub
有没有解决方案可以防止程序在阅读文本时锁定?
注意:Chilkat版本:9.5.0.91
答:
2赞
Chilkat Software
10/12/2023
#1
TaskCompleted 回调是从后台线程调用的,这与 VB6 配合不好。你不会想使用它。
更好的方法是将 AbortCheck 事件(回调)与 HeartbeatMs 属性值一起使用。查看 https://chilkatsoft.com/chilkat_vb6_keep_ui_from_locking_up.asp
评论
0赞
StayOnTarget
10/12/2023
最好将相关详细信息直接添加到此答案中,以防链接或网站以后更改。
0赞
Unforgiven
10/12/2023
@Chilkat软件谢谢,我使用了私有子 AbortButton_Click() bAbort = 1 End Sub 和 Private Sub http_AbortCheck(abort As long) abort = bAbort DoEvents End Sub 。但是中止 Dosn't Fire 和 prog 仍然是锁定的.你能用正确的代码来解决它吗?
评论