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

问题描述 投票:0回答:1

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

asynchronous vb6 chilkat
1个回答
1
投票

TaskCompleted 回调是从后台线程调用的,这在 VB6 中运行得不太好。你不会想用它的。

更好的方法是使用带有 HeartbeatMs 属性值的 AbortCheck 事件(回调)。请参阅https://chilkatsoft.com/chilkat_vb6_keep_ui_from_locking_up.asp

© www.soinside.com 2019 - 2024. All rights reserved.