Autodesk Inventor内に3Dモデルを作成するアプリケーションを作成しました。プロセスの進行状況をユーザーに示すプログレスバーを追加したいと思います。ProgressBarがすべてのステップを視覚的に表示しない
Autodesk Inventorのプロセスが多くのCPUを消費すると、進行状況バーにすべてのステップが表示されず、代わりに(たとえば5ステップ先に)ジャンプしてしまうという問題があります。
Windowsフォームにすべての手順を強制的に表示する方法はありますか?または、この動作は一般的ではありませんか?
Private Sub
' Display the ProgressBar control.
pbBuildProgress.Visible = True
' Set Minimum to 1 to represent the first file being copied.
pbBuildProgress.Minimum = 1
' Set Maximum to the total number of files to copy.
pbBuildProgress.Maximum = BodyComponents.Count
' Set the initial value of the ProgressBar.
pbBuildProgress.Value = 1
' Set the Step property to a value of 1 to represent each file being copied.
pbBuildProgress.Step = 1
' Start loop trough all body components
For i = 0 To BodyComponents.Count - 1
' Some code here that does stuff in Autodesk Inventor
' Perform a step
pbBuildProgress.PerformStep()
Next
End Sub
あなたは少し説明してもらえますが、さらに?何時間もかかりますか?フォームの更新?複数の(そしておそらく不必要な)アップデートを追加すると、どのように役立つはずですか? –
フォームをペイント/更新するのに多くの時間がかかります。あなたは強制的にではなく、不必要な更新からフォームを防ぐ必要があります;-)例えばStopWatchの使用を試し、250msごとに(おそらくApplication.DoEventsで)あなたの更新だけをしてください。これにより、アプリケーションのフリーズを防ぐことができます。 – muffi
「ストップウォッチ」は何かがかかる時間を測定するためのもので、_xミリ秒ごとにコードを実行するのではありません。そして、あなたは '** Application.DoEvents()'を使うべきではありません!そうすることは、ほとんど常に悪いことです。参照:[** UIの応答性とApplication.DoEvents **の危険性を維持する](https://blogs.msdn.microsoft.com/jfoscoding/2005/08/06/keeping-your-ui-responsive-and-アプリケーションの危険性/)。 –