これは説明が少し難しいかもしれませんが、ここでは行っています。progressbar.valueではなくステップバイステップでタイマーを作ることができます
イントロ:
私は9つのチャンネル内のファイルを数えています。各チャネルは、基本的にはパス(\ server \ share \ folder)です。今はタイマーとプログレスバーがあります。 progressbar.value = 10
の場合、channel 1
が検索されています。 When progressbar.value = 20
、channel 2
が検索されています(指定されたパス内のファイルが検索されてカウントされています)。 100を値1に戻してやり直します。
チャンネルにあるパスの中には膨大な量のファイルがあるため、処理が完了するまでに時間がかかり、プログレスバーにヒットしたときにプログラムが遅くなるように見えるという問題があります。多くのファイルを持つチャネルがフックされます。だから私はその間隔に基づいてカウントするタイマを望んでいない
し、その後、すべてがその依存:私が探している何
。私はそのチャンネルを数えたいと思っています。それからそのチャンネルを次のチャンネルに移したいと思っています。基本的にこのように:Channel 1, counting, complete, moving to channel 2.
Channel 2, counting, complete, moving to channel 3.
だからこそ...しかし、それは正確で制御されていなければなりません。したがって、各チャンネルは、の最小値を1秒間使用する必要があります。
はい、私は常にカウントしたくありません。完了するまで各チャンネルをカウントする必要がありますが、非常に短い時間(たとえば5ミリ秒)で完了した場合でも、1秒ほど待ってから次のチャンネルに進みます。これを達成するために私はいくつかのことを試みましたが、私が望むようなものはありません。さらに下を参照してください。ここで
それはあなたが私が話してきたプログレスバーでpbmain.value = 10 then
に気付くでしょう
pbMain.Increment(1)
'Channel 1
If cbc1.Checked = True Then
If pbMain.Value = 10 Then
Try
Dim fileTotal As Integer
For Each item As String In lbChannel1.Items
fileTotal += My.Computer.FileSystem.GetFiles(item.ToString, FileIO.SearchOption.SearchTopLevelOnly, (tbExt1.Text)).Count
Next
tbCount1.Text = String.Format("{0}", fileTotal.ToString)
Catch ex As Exception
lbErrors.Items.Add(String.Concat(TimeOfDay & " Error 001: ", ex.Message)) 'Error output
End Try
Dim tCount As Integer = 0
End If
End If
'Channel 2
'... same as above. Then channel 3, 4, 5, 6, 7, 8 and 9...
timermain.tick
内にあるカウンター。 lbchannel1.items
は、項目としてパスを持つリストボックスであるチャンネルです。これは9チャンネルすべてで繰り返されますが、他のチャンネルはpbmain.value 20,30,40,50,60,70,80,90になりますが、上記のコードでは値10になります。
質問:
私はこれを行うことができますが、チャンネルのカウントを有効にする方法としてprogressbar.valueを使用できませんか?あまり正確ではありません。
質問が投稿された後、tried performstep
とthread.sleep
++になりました。アップデートを見てください。
PS:プログレスバーは必要ありません。視覚効果のためにそこにありません。
更新#1:
代わりのpbmain.increment(1)
私はそれをカウントしたときに、それは次のチャンネルとカウントにスキップthatsの完全なように、各チャネル間pbmain.performstep()
を追加しようとしました。仕事はできますが、それは全く制御されず、狂ったようにループします。だからこそ、これは何とかコントロールされていると素晴らしいだろう。各チャンネルの間にはミリ秒を使用しないでください。アプリケーションは、制御されたものではなく、常に数えられると考えられています。
更新#2:
は、私は現在しようとしているprogressbar Marquee
モードを試して、コメントにPlutonixからヒントを得ました。
更新#3:
私は各カウントの間のThread.sleepしようとしたが、本当にひどくプログラムを凍結するようです。私は、コード内のコメントを参照してください、このようにそれを行うだろう
あなたは正確に各ループのために使用してプログレスバーをインクリメントすることができるようになるだろうアレント。プログレバーをマーキーモードで試しましたか? – Plutonix
ええと、私はそれについて聞いたこともありません。私はそれについていくつかの研究をします。 – MadsTheMan
「私はプログレスバーを隠しました」と言うと、プログレスバーが表示されないということですか?表示されていない場合は、プログレスバーを置くのは何ですか? –