wrongwrongな開発日記

しんまいさんの忘備録

【VB】Progress<T>を使ってみた【.Net】

outside6.wp.xdomain.jp
上記記事をVB向けに写経したのでまとめます。

リポジトリ

GitHubにプロジェクト全体を上げています。
github.com

準備

Windowsフォームアプリでプロジェクトを開始し、Form1へ以下のようにスタートボタン(Button1)とプログレスバー(ProgressBar1)を配置します。
f:id:wrongwrongwrongwrong163377:20180429141759p:plain

スタートボタンを押すと以下のように進捗が出ます。
f:id:wrongwrongwrongwrong163377:20180429141937p:plain

ソースコード

ほぼ完全にVB向けで書き直しただけです。

Public Class Form1
    Async Sub progTest()
        Dim prog = New Progress(Of Integer)(AddressOf onProgressChanged)

        Dim task As Task = Task.Run(
            Sub()
                doSomething(prog)
            End Sub)

        Await task
    End Sub

    Sub doSomething(ByVal iProg As IProgress(Of Integer))
        For ProgressCount As Integer = 1 To 100
            Threading.Thread.Sleep(100)
            iProg.Report(ProgressCount)
        Next
    End Sub

    Sub onProgressChanged(ByVal ProgressCount As Integer)
        ProgressBar1.Value = ProgressCount
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        progTest()
    End Sub
End Class