Przeszukaj aplikacje, sprawdź miejsca gdzie odpytujesz się bazy w oddzielnym wątku (jeśli takie masz), albo Timer'ach, backGroundWorker'ach ??
Wywołania te obsłuż blokiem try catch np.
public void StarrtMe()
{
Thread thr = new Thread(DoStartMe){IsBackGroud = true};thr.Start();
}
private void DoStartMe()
{
try{
//cos tam na bazie:)
}
catch(Exception ex){MessageBox.Show(ex.ToString());}
}
Też chyba miałem kiedyś podobny problem. Jeśli aplikacja nagle się zamyka, to na bank gdzieś sypie wyjątkiem i prawdopodobnie jest to w jakimś wywołaniu asynchronicznym.
Oczywiście, tak jak pisze szogun, obsłuż zdarzenia Application przed wywołaniem Application.Run(new FormMain());.