単純化された自動処理Invokerequired Code Mode
従来のInvokerequiredコードモードは、GUIイベント処理で複雑でイライラします。このモードは、現在のスレッドがコントロールのハンドルにアクセスできるかどうかを確認する必要があります。
この問題を解決するために、リーの方法を改善し、簡略化された方法を開発しました。
この方法は、使用方法を次のように拡張しました
<code class="language-csharp">public static void InvokeIfRequired(this Control control, MethodInvoker action) { // 检查可见性,如有必要则调用 while (!control.Visible) { System.Threading.Thread.Sleep(50); } if (control.InvokeRequired) { control.Invoke(action); } else { action(); } }</code>
コントロールに加えて、isynchronizeinvokeインターフェイスはこの方法からも恩恵を受けることができます。
<code class="language-csharp">richEditControl1.InvokeIfRequired(() => { // 操作控件 richEditControl1.RtfText = value; RtfHelpers.AddMissingStyles(richEditControl1); });</code>
<code class="language-csharp">private static T InvokeIfRequiredReturn<T>(this Control control, Func<T> function) { if (control.InvokeRequired) { return (T)control.Invoke(function); } else { return function(); } }</code>
以上がGUIイベント処理でInvokerequiredコードを簡素化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。