2012-04-11 7 views
0

次のコードは、進行状況バーの進捗状況の例です。 私は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 
+0

なぜあなたはメインスレッドをスリープ状態にしていますか?あなたが処理している場合は、そのプロセスを見て、それに応じてユーザーに知らせるのはいかがですか?多分タイマーと実際のバックグラウンドワーカーを使用していますか? – gbianchi

+0

「本物のバックグラウンドワーカー」とは何ですか?私が知る限り、私はすでにバックグラウンドワーカーを使っていました。 – Muhnamana

+0

私が従おうとしていた例は、このリンクからのものでした:http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx – Muhnamana

答えて

1

この例は間違っています。そこで眠ることは、リアルタイムで時間を費やす操作をdemostrateすることです。あなたはそれを取り出して、実行する必要がある実際の操作を書いてください;)

+0

まあ、私はどこかにコードを追加すると思った! :)私は睡眠が必要かどうかわからなかった。 – Muhnamana

+0

待って、まだ寝る必要はありませんか?私は混乱して混乱しています。たぶん私は間違った場所に自分のコードを固執しています。現在の例をアップロードできますか? – Muhnamana

+0

または次の声明の全体が取り出される必要がありますか? – Muhnamana

関連する問題