|
|
|
C# WinApp ช่วยดูโค้ดหน่อยครับ ว่าตกลงแบบนี้มันรันพร้อนกันรึปล่าว |
|
|
|
|
|
|
|
ไม่ค่อยได้ใช้ซะด้วย ถ้าจำไม่ผิด wait() คำสั่งนี้ คือรอ จนทำเสร็จ
ดังนั้นน่าจะต้องใช้ setTimeout ครอบ ก่อนเพื่อให้ ทำงานพร้อมกัน
|
|
|
|
|
Date :
2018-04-21 18:29:55 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (C#)
void Task_Class_1_0_2()
{
clsCountDown.Srat();
List<Task> TaskList = new List<Task>();
System.IO.Directory.GetDirectories(@"C:\Program Files").ToList<string>().ForEach(d =>
{
Task t = new Task( () =>{
System.IO.Directory.GetFiles(d, "*.*", System.IO.SearchOption.TopDirectoryOnly).ToList<string>().ForEach(f =>
{
richTextBox1.WriteLine("AddFile: {0} ", f);
});});
t.Start();
TaskList.Add(t);
});
int index = Task.WaitAny(TaskList.ToArray());
foreach (Task t in TaskList)
Console.WriteLine("Task {0} Status: {1}", t.Id, t.Status);
this.Write("Finished:{0}", clsCountDown.Final);
}
ใช้ WaitAny แก้ปัญหาเรื่องการทำงานพร้อมกันได้ครับ
แต่ครับแต่
มันจะค้างจนกว่าทำงานจนเสร็จ ซึ่งต่างกับ thread ที่ไม่มีผลกระทบต่อ หน้าหลัก ครับ
ถ้าผมจะกลับมาใช้ thread พอจะมีวิธี หาเวลาได้ไม๊ครับ
|
|
|
|
|
Date :
2018-04-21 22:27:21 |
By :
lamaka.tor |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาเป็น algorithm พอนะครับ ตอนนี้แก่แล้วความจำไม่ค่อยดี และขึ้เกียจค้น
คำสั่งอาจจะไม่ถูกต้อง แต่พอจะรู้ว่ากำลังทำอะไรอยู่
Code (C#)
class rectime { int id; DateTime st; DateTime en; }
void Task_Class_1_0_2()
{
clsCountDown.Srat();
List<Task> TaskList = new List<Task>();
List<rectime> TimeList = new List<rectime>();
int TimeID = 0;
System.IO.Directory.GetDirectories(@"C:\Program Files").ToList<string>().ForEach(d =>
{
Task t = new Task( (id) =>{
rectime rt = new rectime();
rt.id=id;
rt.st = new DateTime(); // add time start
System.IO.Directory.GetFiles(
d, "*.*",
System.IO.SearchOption.TopDirectoryOnly).ToList<string>()
.ForEach(f =>{ richTextBox1.WriteLine("AddFile: {0} ", f); });
rt.en = new DateTime(); // add end time
TimeList.Add(rt);
});
t.Start(TimeID);
TaskList.Add(t);
TimeID++; // เพิ่ม index
});
int index = Task.WaitAny(TaskList.ToArray()); // รอจนงานเสร็จ
foreach (rectime t in TimeList){
Console.WriteLine(
"Task {0} Start: {1} End: {2} ",
t.Id, t.st, t.en
);
this.Write("Finished:{0}", clsCountDown.Final);
}
}
|
ประวัติการแก้ไข 2018-04-22 07:17:00 2018-04-22 07:20:41 2018-04-22 07:21:35
|
|
|
|
Date :
2018-04-22 07:16:05 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|