C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
(追質)時間のかかる処理の進行の表示 [1]
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
[トピック内 23 記事 (21 - 23 表示)]
<<
0
|
1
>>
■102587
/ inTopicNo.21)
Re[7]: (追質)時間のかかる処理の進行の表示
▼
■
□投稿者/ 焼いも
(20回)-(2023/11/21(Tue) 00:53:46)
■
No102586
(とっちゃん さん) に返信
> 趣味として楽しむ範疇は人それぞれなので、ハードルが高いなら超えなくてもいいと思います。
ご理解ありがとうございます。
このような者にも、こうして教えてもいただくこと本当に有り難いことです。
> 強制再描画ではなく、たまったイベントを処理することでアプリケーションが応答なしに
> ならない状態になります。
その通りでそれで十分であり、それを願っての質問でもあります。
> 以下のように変更してみてください(Me.Refreshはあえてコメントで残してある)
>
> ProgressBar1.Value = dats
> ' Me.Refresh()
> Label1.Text = dats.ToString()
> Application.DoEvents()
Label1.Text = dats.ToString() は、この分の時間が掛かるため削除はしましたが、
実際のプログラムに当て嵌め実行もしてみても、処理時間を含め何等の問題もなくただただ感謝です。
これで一挙に解決です。
ありがとうございました。
解決済み
引用返信
編集キー/
編集
■102588
/ inTopicNo.22)
Re[12]: (追質)時間のかかる処理の進行の表示
▲
▼
■
□投稿者/ 焼いも
(21回)-(2023/11/21(Tue) 00:59:57)
■
No102585
(WebSurfer さん) に返信
度々のお手数もお掛けしてしまいましたが、No102586、No102587のようなことです。
ご了承のほどお願い申し上げます。
引用返信
編集キー/
編集
■102589
/ inTopicNo.23)
Re[8]: (追質)時間のかかる処理の進行の表示
▲
▼
■
□投稿者/ WebSurfer
(2809回)-(2023/11/21(Tue) 18:07:00)
解決済みマーク
解決済み
引用返信
編集キー/
編集
このトピックをツリーで一括表示
<前の20件
トピック内ページ移動 /
<<
0
|
1
>>
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No102556 (焼いも さん) に返信 > 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 > >
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-