รายละเอียดของการตอบ ::
กำลังหัดใช้ task ครับช่วงนี้
รื้องาน
https://www.thaicreate.com/dotnet/forum/123982.html
ออกมาแก้ไขครับ
ถ้าเป็น BackgroundWorker เราสามารถ จัดการ process แนวๆนี้ได้ไม๊ครับ ท่าน
Code (C#)
private void Form1_Load(object sender, EventArgs e)
{
for (byte b = 65; b <= 90; b++)
new System.Threading.Thread(RunRandom).Start(new object[] { Convert.ToChar(b).ToString() });
}
void RunRandom(object obj)
{
string s = (string)((object[])obj)[0];
for (int i = 0; i < new Random().Next(1,1000000); i++)
{
this.Invoke(new Action(() => { this.Text = "elapsed time of " + s + " is " + i; }));
richTextBox1.Invoke(new Action(() => { richTextBox1.Text += Environment.NewLine + "elapsed time of " +s+ " is " + i; }));
System.Threading.Thread.Sleep(100);
}
}
ผมกำลังหาคำตอบ ในรูปแบบที่ว่า ถ้าเราสร้าง process ออกมาใช้งานพร้อมๆ เหมือนเราใช้งาน process พร้อมๆซัก 100 process
ในแต่ละ process ทำงานเสร็จโดยใช้เวลาไม่เท่ากัน มองเป็นว่า เราให้มันอ่านชื่อไฟล์ ในแต่ละโฟลเดอร์ ของ ไดรว์ C:
ในแต่ละ process ให้อ่านแต่ละโฟลเดอร์ไป(500 โฟลเดอร์ ก็ 500 process )
ผมอยากรู้ว่า process ไหนเสร็จก่อนเพื่อน และ ตัวไหนเสร็จหลัง หรือ จัดเรียงตามเวลาได้
แล้วเวลารวมที่โปรแกรมเราทำงานเท่าไหร่(ทุก process ทำงานเสร็จ ใช้เวลาเท่าไหร่)
ผมลองใช้ thread แล้ว มันทำงานพร้อมกันก็จริง แต่ยังหาวิธี หาเวลาที่มันทำงานไม่ได้ครับ
BackgroundWorker เท่าที่เคยเล่น 500 process ก็ต้องใช้ BackgroundWorker ในการทำงาน
ตัว task เห็นว่ามีการจัดการรูปแบบการทำงานหลายๆ process แต่ดูๆแล้วเหมือนจะไม่ทำงานพร้อมกันรึป่าวครับ