spoza aplikacji, jest jakaś różnica międzyRóżnica między Environment.Exit i prostego powrotu 2 od głównego
...
Environment.Exit(2)
i
static int Main()
{
...
return 2;
}
?
spoza aplikacji, jest jakaś różnica międzyRóżnica między Environment.Exit i prostego powrotu 2 od głównego
...
Environment.Exit(2)
i
static int Main()
{
...
return 2;
}
?
Najbardziej oczywistą różnicą jest to, że można wywołać Environment.Exit z dowolnego miejsca w kodzie. Poza tym:
Environment.Exit
przerwie to i tak.Environment.Exit
kończy proces bez rozwijania rozwijania stosu i wykonywania bloków (co najmniej zgodnie z moimi eksperymentami). Oczywiście po powrocie z Main
jesteś już na najwyższym poziomie jeśli chodzi o kod zarządzany.Environment.Exit
wymaga odpowiednich uprawnień zabezpieczeń, więc nie będzie pracować dla mniej zaufanych aplikacji.Po przejrzeniu aktualizacji pytania nie jestem do końca pewien, co masz na myśli. W obu przypadkach proces ten będzie po prostu wyjście z kodem 2 ...
Environment.Exit(2)
może być używany wszędzie. return 2
tylko w ramach funkcji Main()
.
+1 Stwierdzenie oczywistego, ale i dobrego punktu. –
Zaktualizowane pytanie - czy są jakieś różnice poza aplikacją? –
Jeśli robisz testów jednostkowych i nazywając główny
Program.Main(args);
wtedy Environment.exit zawsze odzwierciedlają awarię. Gdzie użycie zwrotu będzie działać zgodnie z oczekiwaniami.
Zobacz http://stackoverflow.com/questions/713805/net-finalizers-and-exit0, aby uzyskać szczegółowe informacje na temat finalizacji na końcu procesu. –