C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.97774 の関連記事表示

<< 0 >>
■97774  Re[4]: TPL で メインスレッドの優先順位をあげる方法
□投稿者/ メタルスライム -(2021/07/12(Mon) 23:25:15)
    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さま
    すみません図形モードで張れば
    自動的にインデントされるかと思いましたが
    そんなわけなかったです
記事No.97765 のレス /過去ログ169より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -