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