2
私はタイマーで簡単なGUIアップデートをしています。単一のコントロールを更新する場合、どちらの方法を使用するのが良いですか?このようなMethodInvoker:MethodInvokerとControl.Invoke
this.Invoke((MethodInvoker)delegate
{
systemMode.Text = systemMode.ToString();
});
またはコントロールを作成するには、次のように呼び出す:
明らかpublic void UpdateSystemMode()
{
if (systemMode.InvokeRequired)
{
UpdateSystemMode.Invoke(new
UpdateSystemModeDelegate(UpdateSystemMode));
}
else
{
systemMode.UpdateSystemMode();
}
}
、メソッドの呼び出しは、アップフロントより少ないコードを持っていますが、どちらがベストプラクティスですか?応答のための
public void UpdateSystemMode()
{
if (this.InvokeRequired)
this.BeginInvoke((Action)UpdateSystemMode);
else
systemMode.UpdateSystemMode();
}
ありがとう:
– Jason'BeginInvoke'は' Invoke'とは異なるセマンティクスを持っていることに注意してください!また、 'Action'ではなく' MethodInvoker'デリゲート型を使うと、 'Control.Invoke'はおそらく速くなります。 – Sven
@Sven、InvokeメソッドのActionとMethodInvokerの違いは何ですか? O_oでは、両方ともパラメータがなく、戻り値の型としてvoidを持ちます。 – Nagg