Saya punya yang berikut ini.
public static Thread testThread = new Thread(ThreadStart) {Name = "TestThread", IsBackground = true};
private void Form_Load()
{
testThread.Start()
}
private static void ThreadStart()
{
int count = 0;
try
{
while (true)
{
count++;
}
}
catch (Exception ex)
{
StreamWriter stream = new StreamWriter(File.OpenWrite("Exception.txt"));
stream.WriteLine(count + "\n" + ex);
stream.Flush();
stream.Close();
}
}
Ketika saya menelepon Thread.Abort()
saya menangkap pengecualian dan menulis ke file. Namun, jika saya malah menutup aplikasinya, tidak ada yang tertulis. saya juga punya
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Tapi sepertinya tidak ada pengecualian yang pernah diberikan.
Saya kira menambahkan pertanyaan adalah tindakan yang bijaksana.
Apa yang terjadi pada thread latar belakang yang berjalan ketika proses induk keluar? Pemahaman saya adalah ThreadAbortException dilemparkan untuk keluar dari thread. Jika hal ini terjadi, bagaimana ThreadAbortException dapat ditangkap untuk membersihkan sumber daya yang mungkin ada di thread?
Thread.Abort()
. Membunuh benang itu buruk, oke? Lebih baik yakinkan mereka untuk bunuh diri, agar tidak masuk penjara. - person CodesInChaos   schedule 06.02.2012