2021/07/13(Tue) 07:24:38 編集(投稿者)
Azulean 様
サンプルコードはRefreshをしなかったとしても
ある程度負荷のかかるコードをメインスレッドで実施しなければならない場合の意味をこめて
System.Threading.Thread.Sleep(100)
を入れています
下記のコードを非同期にして、キャンセルボタン等を受付することは無理なのでしょうか?
Private Sub Button1_Click_3(sender As Object, e As EventArgs) Handles Button3.Click
HIDOUKI()
End Sub
Private Async Sub HIDOUKI()
Await Task.Run(Function() Parallel.[For](0, 500,
Sub(n)
Me.BeginInvoke(Sub()
Me.Text = ”実行中_” & n
Me.Refresh()
System.Threading.Thread.Sleep(100)
End Sub)
System.Threading.Thread.Sleep(1000)
End Sub))
MsgBox("完了")
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
WhenAllProgress_Click()
End Sub
Private Async Sub WhenAllProgress_Click()
Dim taskList = New List(Of Task)()
For i As Integer = 0 To 500 - 1
Dim n As Integer = i
taskList.Add(Task.Run(Sub()
Me.BeginInvoke(Sub()
Me.Text = ”実行中_” & n
Me.Refresh()
System.Threading.Thread.Sleep(100)
End Sub)
System.Threading.Thread.Sleep(1000)
End Sub))
Next
Await Task.WhenAll(taskList.ToArray())
MsgBox("完了")
End Sub
websurferさま
すみません図形モードで張れば
自動的にインデントされるかと思いましたが
そんなわけなかったです