次のコードは、進行状況バーの進捗状況の例です。 私はSystem.Threading.Thread.Sleep(100)
(速いプロセス)またはSystem.Threading.Thread.Sleep(2000)
(遅いプロセス)の行を調整しています。スレッドを調整します。さまざまな基準に基づいて休憩
これをオンザフライで調整する方法はありますか?
少しの背景情報が役立つかもしれません。毎日、数百から数千に及ぶPDFを作成します。その後、すべてのPDFが圧縮され、SFTP経由で転送されます。 PDFのサイズも異なる場合があります。
明らかに私が処理する小さなPDFがほんの一握りであれば、私のSystem.Threading.Thread.Sleep(100)
は下端にあるはずです。
私の元の質問に戻ると、その数はPDFの数とそれらのすべてのサイズに基づいてオンザフライで調整できますか?
またはテストランを処理し、使用するにはその魔法の番号を見つける必要はありますか?
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim ZipPDFs As BackgroundWorker = CType(sender, BackgroundWorker)
Dim i As Integer
For i = 1 To 10
If (ZipPDFs.CancellationPending = True) Then
e.Cancel = True
Exit For
Else
' Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(100)
ZipPDFs.ReportProgress(i * 10)
End If
Next
End Sub
なぜあなたはメインスレッドをスリープ状態にしていますか?あなたが処理している場合は、そのプロセスを見て、それに応じてユーザーに知らせるのはいかがですか?多分タイマーと実際のバックグラウンドワーカーを使用していますか? – gbianchi
「本物のバックグラウンドワーカー」とは何ですか?私が知る限り、私はすでにバックグラウンドワーカーを使っていました。 – Muhnamana
私が従おうとしていた例は、このリンクからのものでした:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx – Muhnamana