Invoke のコンパイルチェックが厳格に

2.0は無名メソッドが可能なので内部定義。下記はツリーノードを別スレッドから削除している。
Control.Invoke では、System.Delegate の MethodInvoker にキャストしてやる。

1
2
3
4
5
6
if (node.TreeView != null) {
node.TreeView.Invoke((System.Windows.Forms.MethodInvoker)delegate()
{
node.Remove();
});
}

System.AppDomain.GetCurrentThreadId() は古い形式です

System.Threading.Thread.CurrentThread.ManagedThreadId を使う。