DOBON.NETプログラミング道掲示板

■34345 / 親階層)  WebClientで、短期間にDownloadStringAsyncを実行したい
□投稿者/ VBはじめました 一般人(10回)-(2019/10/29(Tue) 11:48:38)
  • アイコン環境/言語:[VB.net] 
    分類:[.NET] 

    Webから、Htmlデータをダウンロードするプログラムを作ろうとしています。
    どうしても、Completedする前に、別のページのダウンロードを始める(その場合、ダウンロード中のデータは破棄してよい)必要があります。

    DownloadStringAsyncの前にCancelAsyncを実行すれば可能かと思ったのですが、
    System.NotSupportedException: 'WebClient は同時 I/O 操作をサポートしません。'とエラーが発生します。

    但し、キャンセル場合もあります。(不安定)
    どのようにすれば、確実にキャンセルできるのでしょうか?
    詳しい方いらっしゃいまいたら教えてください。
    サンプルのコードは下記になります。(フォームにボタン一つ貼り付けている)
    3回に一回ぐらいは成功する

    Imports System.Net
    Imports System.Text

    Public Class Form1
    Dim myUri As Uri = New Uri("https://www.yahoo.co.jp/")
    Dim HtmlData As String
    WithEvents myWebClient As New WebClient
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    myWebClient.Encoding = Encoding.UTF8
    myWebClient.DownloadStringAsync(myUri)
    myWebClient.CancelAsync()
    myWebClient.DownloadStringAsync(myUri) ←ここでエラー発生!
    End Sub
    Private Sub myWebClient_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs) Handles myWebClient.DownloadStringCompleted
    If e.Error Is Nothing Then
    HtmlData = CStr(e.Result)
    MsgBox(HtmlData.Substring(0, 1000))
    ElseIf e.Cancelled Then
    MsgBox("キャンセルボタンが押されました。")
    End If
    End Sub
    End Class


マルチポストを報告
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: WebClientで、短期間にDownloadStringAsyncを実行したい /shu
 
上記関連ツリー

Nomalアイコン WebClientで、短期間にDownloadStringAsyncを実行したい / VBはじめました (19/10/29(Tue) 11:48) #34345 ←Now
Nomalアイコン Re[1]: WebClientで、短期間にDownloadStringAsyncを実行したい / shu (19/11/07(Thu) 08:49) #34370
  └Nomalアイコン Re[2]: WebClientで、短期間にDownloadStringAsyncを実行したい / VBはじめました (19/11/07(Thu) 10:14) #34371 解決み!

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -