关于窗口被关闭, 但是线程仍然运行的问题。 多谢各位贵人襄助
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace MdiFrm
{
public partial class Form2 : Form
{
protected override void Dispose(bool disposing)
{
if (T != null) //当窗口已经被销毁。 结束该线程
{
T.Interrupt();
T = null;
}
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
public Form2()
{
InitializeComponent();
bln = true;
}
Thread T;
bool bln;
private void Form2_Load(object sender, EventArgs e)
{
T = new Thread(new ThreadStart(Start));
T.IsBackground = true; //只有等窗口是主窗口的时候, 才会自动被运行时清理
T.Start();
}
private void Start()
{
while (bln)
{
if (this.label1.InvokeRequired)
{
try
{
this.label1.Invoke(new EventHandler(UpdateText));
}
catch (ThreadInterruptedException ex) //此处会抛出线程被中断的一个异常
{
MessageBox.Show(bln.ToString());
}
}
Thread.Sleep(50);
}
}
private void UpdateText(object sender, EventArgs e)
{
if (bln)
{
this.label1.Text += ".";
}
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
bln = false; //当窗口被关闭时让循环终止
}
}
}