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

わんくま同盟

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

C# と VB.NET の入門サイト

■102542 / 6階層)  時間のかかる処理の進行の表示
□投稿者/ kiku (383回)-(2023/11/15(Wed) 11:12:54)
No102537 (焼いも さん) に返信
> ■No102535 (KOZ さん) に返信
> ありがとうございます。
> No102529ので十分ですのでそちらを使わせていただきます。
> それとこれはProgressBar1.Valueを直接設定したもですが、これも同じように可能でしょうか?

下記のようにすればできるはずです。
UIスレッド、別スレッド、invoke、Async、Awaitをきちんと学ばないと、
応用問題ができなくなります。
基礎を学ぶことを強くお勧めします。

※下記ではinvoke出てきていませんが、必要な知識です。
※Button1_Click内の処理はUIスレッド上で実行されます。
※Task.Run内の処理は別スレッド上で実行されます。
※Awaitがあると、処置が完了するまで、UIスレッドをブロックすることなく
 Button1_Click内の処理を一時中断します。
※上記言葉が技術的ではないところもありますが、イメージとしてとらえてください。

    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = 100
        ProgressBar1.Value = 0
        Label1.Text = "0"
        Me.Refresh()

        Await Task.Run(
            Sub()
                System.Threading.Thread.Sleep(500)   'ここに時間のかかる処理
            End Sub)
        ProgressBar1.Value = 25
        Label1.Text = 25.ToString()
        Me.Refresh()

       以下、上記と同様に修正

        System.Threading.Thread.Sleep(500)   'ここに時間のかかる処理  
        ProgressBar1.Value = 50
        Me.Refresh()
        Label1.Text = 50.ToString()

        System.Threading.Thread.Sleep(500)   'ここに時間のかかる処理 
        ProgressBar1.Value = 75
        Me.Refresh()
        Label1.Text = 75.ToString()

        System.Threading.Thread.Sleep(500)   'ここに時間のかかる処理  
        ProgressBar1.Value = 100
        Me.Refresh()
        Label1.Text = 100.ToString()
  
   End Sub

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[5]: 時間のかかる処理の進行の表示 /焼いも →Re[7]: 時間のかかる処理の進行の表示 /焼いも
 
上記関連ツリー

時間のかかる処理の進行の表示 / 焼いも (23/11/12(Sun) 15:19) #102521
Re[1]: 時間のかかる処理の進行の表示 / WebSurfer (23/11/12(Sun) 15:44) #102522
│└ Re[2]: 時間のかかる処理の進行の表示 / 焼いも (23/11/12(Sun) 17:56) #102523
│  └ Re[3]: 時間のかかる処理の進行の表示 / WebSurfer (23/11/12(Sun) 18:19) #102524
│    └ Re[4]: 時間のかかる処理の進行の表示 / 焼いも (23/11/12(Sun) 23:36) #102526
│      └ Re[5]: 時間のかかる処理の進行の表示 / WebSurfer (23/11/12(Sun) 23:53) #102528
Re[1]: 時間のかかる処理の進行の表示 / Azulean (23/11/12(Sun) 22:13) #102525
│└ Re[2]: 時間のかかる処理の進行の表示 / 焼いも (23/11/12(Sun) 23:42) #102527
Re[1]: 時間のかかる処理の進行の表示 / KOZ (23/11/13(Mon) 02:38) #102529
  ├ Re[2]: 時間のかかる処理の進行の表示 / KOZ (23/11/13(Mon) 02:48) #102530
  │├ Re[3]: 時間のかかる処理の進行の表示 / WebSurfer (23/11/13(Mon) 09:44) #102531
  │└ Re[3]: 時間のかかる処理の進行の表示 / 焼いも (23/11/13(Mon) 18:59) #102533
  │  └ Re[4]: 時間のかかる処理の進行の表示 / KOZ (23/11/14(Tue) 02:42) #102535
  │    └ Re[5]: 時間のかかる処理の進行の表示 / 焼いも (23/11/14(Tue) 18:37) #102537
  │      ├ Re[6]: 時間のかかる処理の進行の表示 / KOZ (23/11/15(Wed) 09:55) #102541
  │      │└ Re[7]: 時間のかかる処理の進行の表示 / 焼いも (23/11/16(Thu) 22:31) #102555 解決済み
  │      └ 時間のかかる処理の進行の表示 / kiku (23/11/15(Wed) 11:12) #102542 ←Now
  │        └ Re[7]: 時間のかかる処理の進行の表示 / 焼いも (23/11/16(Thu) 15:47) #102552 解決済み
  └ Re[2]: 時間のかかる処理の進行の表示 / 焼いも (23/11/13(Mon) 18:31) #102532
    └ Re[3]: 時間のかかる処理の進行の表示 / Azulean (23/11/14(Tue) 00:04) #102534
      └ Re[4]: 時間のかかる処理の進行の表示 / 焼いも (23/11/14(Tue) 18:01) #102536

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