DownloadTaskAsync方法

如果要在文件下载结束后进行某些操作,通常直接使用DownloadStateChanged事件即可。

如果需要通过代码主动下载文件,且在下载完成后要进行某些操作,如果为了方便维护,希望将相关代码写在同一个事件中,那么
就需要DownloadTaskAsync函数登场了。

DownloadTaskAsync函数用于异步等待文件下载完成。

语法:

Await wv.NavigationTaskAsync(timeout)

timeout 可选,等待的秒数,默认30秒,如果在设定时间内没有成功加载网页,则退出该方法。


返回值类型为
CoreWebView2DownloadOperation,用于表示下载任务:

属性名 类型 说明
Uri String 当前下载资源的原始下载地址URL
MimeType String 返回下载内容的类型
ResultFilePath String 返回文件存储路径和文件名
State CoreWebView2DownloadState CoreWebView2DownloadState类型,用于表示下载窗台,包括三个值:

Completed:    下载成功
Interrupted:  暂停或失败
InProgress:   正在下载

TotalBytesToReceive Long 下载内容的字节数,也就是文件大小

NavigationTaskAsync的使用场景为:

示例

窗口的AfterLoad事件代码如下,用于打开微信下载页面:

'''Async
Dim
wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
Await
wv.EnsureCoreWebView2Async(Nothing)
wv.CoreWebView2.Navigate(
"https://pc.weixin.qq.com/")

添加一个按钮,用于下载微信:

'''Async
Dim
wv As WebViewer = e.Form.Controls("WebViewer1").WebViewer
wv.querySelector(
"#downloadButton").click() '模拟单击下载按钮
Dim downop As CoreWebView2DownloadOperation = Await wv.DownloadTaskAsync(600) '等候10分钟
If
downop Is Nothing Then '如果返回Nothing,表明下载根本没有启动,可能是服务器故障、链接错误或断网
    MessageBoxA.Show(
"下载启动失败")
ElseIf
downop.State = CoreWebView2DownloadState.Completed Then
   
Dim str As String = "url来源:" & downop.Uri & vbCrLf
    str = str &
"存储路径:" & downop.ResultFilePath & vbCrLf
    str = str &
"文件大小:" & downop.TotalBytesToReceive
    MessageBox.Show(str,
"下载成功")
ElseIf
downop.State = Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.Interrupted Then
    MessageBoxA.Show(
"下载失败")
ElseIf
downop.State = Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.InProgress Then
    downop.Cancel()
'取消下载,可选,如果不执行Cancel,则超时后会继续下载,可通过StateChanged事件获取 最终状态
    MessageBoxA.Show(
"下载超时")
End
If


本页地址:http://www.foxtable.com/webhelp/topics/6896.htm