ラムダ式から特定のデリゲート型にのみ変換できます。この特定のケースでは、非常に簡単ですが、Action
代わりに使用できます (またはMethodInvoker
、またはパラメーターと戻り値のない任意のデリゲートvoid
型)。
if (this.InvokeRequired)
{
this.Invoke((Action) (() => this.CheckVersionInfo()));
}
または、単純化するためにメソッド グループ変換を使用します。
if (this.InvokeRequired)
{
this.Invoke((Action)CheckVersionInfo);
}
または、拡張メソッドを追加するControl
かISynchronizeInvoke
、単にメソッドを追加するInvoke(Action)
か、「チェックして呼び出す」メソッドを追加します。(どちらも異なるコンテキストで役立ちます。)
正直なところ、このように基本的に壊れている場合、インポートしている残りのコードに非常に神経質になります。最初からコードがコンパイルされていない場合、最も明白なエラーを修正した後、コードが機能するという自信はどれくらいありますか?
これは、C# のバージョンが異なるだけの問題ではないことに注意してください。投稿したコードは、C# のどのバージョンでも機能しませんでした。