Si direi che va bene, di fatto l'applicazione viene completamente uccisa in quel modo, ogni form creata da quella applicazione viene chiusa, e poi il processo si chiude.
Questa è una parte decompilata del processo di chiusura:
private static bool ExitInternal()
{
bool flag;
bool flag1 = false;
lock (Application.internalSyncObject)
{
if (!Application.exiting)
{
Application.exiting = true;
try
{
if (Application.forms != null)
{
foreach (Form openFormsInternal in Application.OpenFormsInternal)
{
if (!openFormsInternal.RaiseFormClosingOnAppExit())
{
continue;
}
flag1 = true;
break;
}
}
if (!flag1)
{
if (Application.forms != null)
{
while (Application.OpenFormsInternal.Count > 0)
{
Application.OpenFormsInternal[0].RaiseFormClosedOnAppExit();
}
}
Application.ThreadContext.ExitApplication();
}
}
finally
{
Application.exiting = false;
}
return flag1;
}
else
{
flag = false;
}
}
return flag;
}
comunque per sicurezza controlla tu stesso dal task manager se semplicemente il processo/eseguibile è ancora presente o meno tra la lista dei processi (in task manager -> details /win8).
Michael Denny | Microsoft Visual C# MVP
http://blogs.dotnethell.it/Regulator/
http://dennymichael.net
http://mvp.microsoft.com/mvp/Michael%20Denny-5000735
Twitter: @dennymic