| | タイトル | : Re^6: マルチスレッドでスレッドを何度も実行する方法を教えてください |  | 記事No | : 5857 |  | 投稿日 | : 2007/07/18(Wed) 03:58 |  | 投稿者 | : ポン太 | 
 たびたび申し訳ございません。
 また一つ分からなくなってしまいました。お助け頂けないでしょうか。
 WebClientのDownloadFileを実行中にプログレスバーで転送した量を
 0%−100%で表示したいのですが、(ダウンロードの場合)
 最初HttpWebRequestとHttpWebResponseでファイルのサイズを取得して、
 Sub Downloading()というものがあり、その中で
 DownloadFileを実行して出来たローカルファイルのファイルサイズを
 Do Loopで1秒おきくらいで確認してプログレスバーを進めようと思っているのですが、
 Downloading()をメインスレッドで実行することは出来ないでしょうか。
 
 主な部分だけですが具体的には下記のようになっています。
 
 Private Sub Button1_Click ・・・
 t.Start()
 End Sub
 
 Sub Download()
 Label1.Text="ダウンロード中"
 Downloading()
 FileNameの空のファイルを作成
 Wc.DownloadFile(URL,FileName)
 Label1.Text="ダウンロード完了"
 End Sub
 
 
 Sub Downloading()
 Do Until Label1.Text = "ダウンロード完了"
 ローカルのファイルのサイズを確認
 プログレスバーを進める
 Application.DoEvents()
 System.Threading.Thread.Sleep(1000)
 Loop
 End Sub
 
 このままですとDownload()内のDownloading()を呼び出したところで
 ずっと停止してしまいます。
 Downloading()をメインスレッドで実行できればと思うのですが、
 もう一つスレッドを用意しないとならないでしょうか?
 
 またはWc.DownloadFileメソッドでファイルを転送する際に
 転送サイズをプログレスバーに反映できる良い方法がありましたら
 アドバイスを頂けると幸いです。
 
 |