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

わんくま同盟

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

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

■102556 / 親階層)  (追質)時間のかかる処理の進行の表示
□投稿者/ 焼いも (11回)-(2023/11/17(Fri) 18:27:24)

分類:[VB.NET/VB2005 以降] 

102521に関連しての追加質問で恐縮です。

上が従来ので、下が教えていただいたのを参考にし作ったものです。
どちらも正常に働き結果も同じなのですが、何故か下にした場合には所要時間がとてつもなく掛かってしまうのです。
サンプルではシンプルに作ってますが、実際のは結構複雑な計算もしていて、またその結果データの書き込みもしてもいます。
何故これほどの時間差が出るのか、ご教授のほどお願い致します。

<従来型>
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using sr As New System.IO.StreamReader("C:\Users\***\***.csv", System.Text.Encoding.GetEncoding("Shift_JIS"))
            Dim dats As Integer = 0   '処理済み数
            ProgressBar1.Minimum = 0 : ProgressBar1.Maximum = 2000 : ProgressBar1.Value = 0
            Label1.Text = "0"
            Do While Not sr.EndOfStream
                Dim dt As String = sr.ReadLine     '1行全てを読み取る

                System.Threading.Thread.Sleep(100)   'ここに全ての計算や結果データの書き込みもあります。

                '処理済み数(ProgressBar1値の更新)
                dats = dats + 1  
                ProgressBar1.Value = dats
                Me.Refresh()
                Label1.Text = dats.ToString()

                If dats = 2000 Then   '一応ここで脱出
                    Exit Do
                End If
            Loop
            sr.Close()
        End Using
    End Sub

<改良型>
    Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using sr As New System.IO.StreamReader("C:\Users\***\***.csv", System.Text.Encoding.GetEncoding("Shift_JIS"))
            Dim dats As Integer = 0   '処理済み数
            ProgressBar1.Minimum = 0 : ProgressBar1.Maximum = 2000 : ProgressBar1.Value = 0
            Label1.Text = "0"
            Do While Not sr.EndOfStream
                Dim dt As String = sr.ReadLine     '1行全てを読み取る

                Await Task.Run(
            Sub()
                System.Threading.Thread.Sleep(100)   'ここに全ての計算や結果データの書き込みもあります。

            End Sub)
                '処理済み数(ProgressBar1値の更新)
                dats = dats + 1 
                ProgressBar1.Value = dats
                Label1.Text = dats.ToString()

                If dats = 2000 Then   '一応ここで脱出
                    Exit Do
                End If
            Loop
            sr.Close()
        End Using
    End Sub


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: (追質)時間のかかる処理の進行の表示 /とっちゃん
→Re[1]: (追質)時間のかかる処理の進行の表示 /魔界の仮面弁士
 
上記関連ツリー

(追質)時間のかかる処理の進行の表示 / 焼いも (23/11/17(Fri) 18:27) #102556 ←Now
Re[1]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/17(Fri) 20:50) #102557
│├ Re[2]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 10:24) #102559
│└ Re[2]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 15:04) #102562
Re[1]: (追質)時間のかかる処理の進行の表示 / 魔界の仮面弁士 (23/11/17(Fri) 20:56) #102558
  ├ Re[2]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 10:40) #102560
  │└ Re[3]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 12:05) #102561
  │  └ Re[4]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 15:29) #102563
  │    └ Re[5]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/18(Sat) 15:52) #102564
  │      └ Re[6]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/18(Sat) 20:07) #102567
  │        └ Re[7]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/19(Sun) 10:22) #102574
  │          └ Re[8]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 00:00) #102578
  │            └ Re[9]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/20(Mon) 09:06) #102582
  │              └ Re[10]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 15:45) #102583
  │                └ Re[11]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/20(Mon) 17:13) #102585
  │                  └ Re[12]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/21(Tue) 00:59) #102588
  └ Re[2]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/19(Sun) 02:11) #102572
    └ Re[3]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 00:07) #102579
      └ Re[4]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/20(Mon) 01:48) #102581
        └ Re[5]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/20(Mon) 15:47) #102584
          └ Re[6]: (追質)時間のかかる処理の進行の表示 / とっちゃん (23/11/20(Mon) 17:37) #102586
            └ Re[7]: (追質)時間のかかる処理の進行の表示 / 焼いも (23/11/21(Tue) 00:53) #102587 解決済み
              └ Re[8]: (追質)時間のかかる処理の進行の表示 / WebSurfer (23/11/21(Tue) 18:07) #102589 解決済み

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