0
私のアプリはいくつかの操作の処理時間を表示する必要があります。プロセス時間の1つは、UIでプロセス時間をリフレッシュするために費やされた時間です(それを得ましたか?:D)。ユーザーインターフェイスの一部のリフレッシュ時間を測定する(および制御する)最善の方法
操作の頻度は、0〜約100 Hz(10 ms)まで変化します。
処理時間は一部のラベルで表示されます。
public Class UserInteface
{
//Static action to SafeSetControlText
private static Action<Control, string> actionSetControlText = delegate(Control c, string txt) { c.Text = txt; };
//Control
//Set Text
public static void SafeSetControlText(Control control, string text, bool useInvoke = false)
{
//Should I use actionSetControlText or it is ok to create the delegate every time?
Action<Control, string> action = delegate(Control c, string txt) { c.Text = txt; };
if (control.InvokeRequired)
{
if (useInvoke)
control.Invoke(action, new object[] { control, text });
else
control.BeginInvoke(action, new object[] { control, text });
}
else
action(control, text);
}
}
質問:
- 私はプロセス時間を更新するためにtryngすべての私のUIをフリーズしたくないので、それがあるときにどのように私は制御する必要があり、それは私がこの静的メソッドを使用して値を設定するにはリフレッシュするには?今、私のようなことをやっています:前回の更新時刻が100 msだった場合にのみ更新します。
- BegingInvokeを使用している場合は、オーバーフローが発生する可能性があります。コールが多すぎるキューはありますか?
- BeginInvokeを使用してのUI更新時間を測定するにはどうすればよいですか?最善の方法はInvokeを使用することですか?
Hummのおかげで、デリゲートについてどう思いますか?毎回新しいデリゲートを作成してもよろしいですか、静的なデリゲートを使用する方が良いですか? – Pedro77
@ Pedro77:絶対に、申し訳ありませんが、私はこれを逃した。毎回デリゲートを作成せず、初期化メソッドで一度だけ作成します。 – Tigran
メトスは静的なので、上のコードのように、Illは静的なデリゲートを1つ使用すると思います。それは "悪いコード"ですか? – Pedro77