0

それほど新しくない開発マシンで約 0.7 秒間実行される関数があります。(私がテストした別のマシンでは約 3 秒間実行されます)

上記の機能が実行される約 0.5 秒前に、ユーザーにプレメッセージを表示したいと考えています。

機能が完了する前にメッセージを表示したくありません。メッセージを見て待つのは煩わしいからです。一方、すべてがユーザーのアクションから始まり、時間を無駄にしたくないため、関数が完了するまで待ちません。他の関数がその仕事をしている間にそのメッセージを表示できればよいのです.

関数が「速すぎる」場合に事前メッセージがハングするように、短いループを既に追加しましたThread.sleep()が、通常はそうではないのではないかと心配しています...そして、私が関数を実行する前に、現在のマシンの仕様や現在の CPU 使用率に基づいて実行時間を大まかに見積もることができます。また、秒とミリ秒について話しているため、この情報の取得に数ミリ秒以上かかる場合は、価値がありません。この場合、アプリケーションのロード時に 1 回だけ計算することがあります。

誰もそれを行う方法を知っていますか?

4

1 に答える 1

1

時間の見積もりは無意味であり、正確であることはおそらく不可能です。(ただし、それを実行できるシナリオがいくつかあるかもしれません)。

過去の Windows ファイルのコピーを見てください。「残り 10 秒.... 残り 2 分.... 残り 5 秒」 使用したメトリックに基づいて見積もりを変更し続けました。何かが起こっていることをユーザーに知らせるために、ただの画像またはメッセージを表示する方がよいでしょう。

アイテムのリストを処理している場合、メッセージは次のようになるため、はるかに簡単になります。

100 個中 4 個目のアイテムを処理しています。

少なくとも、ユーザーはコードが何をしているかを大まかに知ることができます。このようなユーザーに通知するものが何もない場合は、損失を減らし、単純な「処理中....」メッセージまたはアイコンなど、ソリューションに必要なものは何でも表示します。

于 2013-03-13T14:26:29.127 に答える