投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/11/1 21:16:09
> BeginInvoke なるヒントをいただきまして、
処理中にウィンドウが閉じられた場合、処理タイミングによっては
ObjectDisposedException 例外が発生するのでご注意ください。


> Delegate Sub InvokeDelegate()

.NET Framework 3.5 以降には Action デリゲートがあるので、
わざわざデリゲートを用意する必要は無いですよ。
引数付きなら Action(Of ) デリゲート。

それとInvoke / BeginInvoke メソッドに渡すデリゲートは、自作デリゲートや Action デリゲートではなく、
MethodInvoker デリゲートを使うことが望ましいです。シグネチャに互換性があれば
MethodInvoker 以外でも呼べるのですが、内部的には MethodInvoker の方が効率が良いです。

Control.Invoke(Delegate, Object() ) メソッドのヘルプより引用
>
> デリゲートは、EventHandler のインスタンスである場合もあります。その場合は、
> sender パラメータにこのコントロールが含まれ、イベント パラメーターには
> EventArgs.Empty が含まれます。デリゲートは MethodInvoker のインスタンス、または
> 空のパラメータ リストをとるその他のデリゲートである場合もあります。
> EventHandler デリゲートまたは MethodInvoker デリゲートの呼び出しの方が、
> 別の種類のデリゲートの呼び出しよりも高速に実行されます。 
>