ฉันมีสิ่งต่อไปนี้
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();
}
}
เมื่อฉันโทร Thread.Abort()
ฉันพบข้อยกเว้นและเขียนลงในไฟล์ อย่างไรก็ตาม ถ้าฉันปิดแอปพลิเคชันแทน ไม่มีอะไรเขียนเลย ฉันยังมี
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
Application.ThreadException +=
new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
แต่ดูเหมือนว่าจะไม่มีข้อยกเว้นเกิดขึ้น
ฉันคิดว่าการเพิ่มคำถามเป็นเรื่องที่รอบคอบ
จะเกิดอะไรขึ้นกับเธรดพื้นหลังที่ทำงานอยู่เมื่อกระบวนการหลักออก ความเข้าใจของฉันคือ ThreadAbortException ถูกส่งออกไปเพื่อออกจากเธรด หากเป็นกรณีนี้ ThreadAbortException จะถูกตรวจจับเพื่อล้างทรัพยากรที่อาจมีอยู่ในเธรดได้อย่างไร
Thread.Abort()
กระทู้ฆ่ามันไม่ดีใช่ไหม? โน้มน้าวพวกเขาให้ฆ่าตัวตายดีกว่า จะได้ไม่ต้องติดคุก - person CodesInChaos   schedule 06.02.2012