>>329
異常終了するのはSystem.Threadの方みたいです。
EndInvokeも使わない方向で。

Do(){ try{Do2();}catch{} }についてDo.BeginInvoke(null,null)して、
本来ならDo2の例外をDo内でcatchできると思う…のですが、
Do2内でInvokeによってUIスレッドを呼び出しているせい(?)か
Doごと死んでしまう、のです。