ASP.Netのライフサイクルと同様に、C#コンソールアプリケーションに何らかのライフサイクルがあるかどうかを知りたいと思います。
特に興味があります
- アセンブリの解決-これはいつ発生しますか
static Mainコンパイル-メソッドは依存オブジェクトのコンパイルにどのように影響しますか
ASP.Netのライフサイクルと同様に、C#コンソールアプリケーションに何らかのライフサイクルがあるかどうかを知りたいと思います。
特に興味があります
static Mainコンパイル-メソッドは依存オブジェクトのコンパイルにどのように影響しますか通常、各メソッドは最初に実行されたときにJITされ、必要に応じてアセンブリの解決が再度行われます。これは通常、「まだ必要のないアセンブリを使用するメソッドのJIT中に」を意味します(ただし、リフレクションを介して)。 。
static Main他の方法と同じように機能します。で使用するものはすべて、実行を開始するMain前に解決されます。Main場合によっては、(デバッグを支援するために)次のことが必要になる場合があります。
static int Main(string[] args) {
try {
return MainImpl(args);
} catch(Exception ex) {
// .. do something
return -1;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
static int MainImpl(string[] args) { ... }
これは、通常は含まれているMain(ただし現在は含まれている)コードがMainImplアセンブリ解決エラーを引き起こしている場合に役立ちます...最初に正常にJITできない場合はcatch、何かを入れることができないためです。MainMain
ライフサイクルは...
Main)Main、スレッドサーバーの例ではより複雑になる可能性があります