如何使用 Chilkat 作为异步通过 VB6 从网站获取数据?

How can I use Chilkat as Async to get data from website via VB6?

提问人:Unforgiven 提问时间:10/12/2023 最后编辑:StayOnTargetUnforgiven 更新时间:10/12/2023 访问量:95

问:

我想读取服务器上的文本文件的数据,并使用 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

异步 VB6 Chilkat

评论


答:

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 仍然是锁定的.你能用正确的代码来解决它吗?