for void メソッドを処理するジェネリック メソッドを作成するための解決策が思いつきませんInvokeRequired
(戻り値については後で扱います)。私は次のようなことを考えていました:
// Probably not the best name, any ideas? :)
public static void CheckInvoke(this Control instance,
,Action<object, object> action)
{
if (instance.InvokeRequired)
{
instance.Invoke(new MethodInvoker(() => action));
}
else
{
action()
}
}
次に、次のように書くことができます。
public partial class MyForm : Form
{
private ThreadedClass c = new ThreadedClass();
public MyForm()
{
c.ThreadedEvent += this.CheckInvoke(this
,this.MethodRequiresInvoke
,sender
,e);
}
}
これは明らかにコンパイルされません。私はそれを完全に結び付けることができません。