Thread t;
//public static Queue queueThread = new Queue();
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
//if (queueThread.Count > 0)
// {
Thread td = (Thread)queueThread.Dequeue();
td.Abort();
// }
t = new Thread(new ThreadStart(this.RunProgressBar));
// queueThread.Enqueue(t);
}
private void RunProgressBar()
{
for (int i = 0; i < j =" progressBar1.Minimum;" value =" j;" k =" progressBar1.Maximum;"> progressBar1.Minimum; k--) {
progressBar1.Value = k;
Thread.Sleep(100);
}
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
t.Start();
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (t.IsAlive)
t.Abort();
}
Note:
- ส่วนมาถ้าเราใช้ thread มาเกี่ยวข้อง ต้องระวังเรื่องโพรเซส ของ thread ที่เราสร้างใหม่ ภายใต้ main thread ไม่โดนทำลายเมื่อปิด main thread ทำให้โพรเซสข้างใน tasklist
- การแก้ปัญหาสามารถประยุกค์ใช้ collection ต่างๆ มาช่วยสำหรับการเก็บ thread เช่น เมื่อเราทำการสร้าง thread ให้เราตรวจสอบ collection เราสร้างมี object thread อยู่ข้างในหรือไม่ถ้ามีก็นำออกมาก abort() ซะ แล้วเราก็ทำการเพิ่ม thread นั้นเข้าไปใน collection ต่อไป
Related:
Code:
No comments:
Post a Comment