Sunday, May 3, 2009

Create progressbar style block C#



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

Popular Posts