Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,426

HOME > .NET Framework > Forum > C# WinApp ช่วยดูโค้ดหน่อยครับ ว่าตกลงแบบนี้มันรันพร้อนกันรึปล่าว



 

C# WinApp ช่วยดูโค้ดหน่อยครับ ว่าตกลงแบบนี้มันรันพร้อนกันรึปล่าว

 



Topic : 130879



โพสกระทู้ ( 4,070 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



Code (C#)
void Task_Class_1_0()
        {
        clsCountDown.Srat();
        Task t0 = Task.Run(() =>
            {
                System.IO.Directory.GetDirectories(@"C:\Program Files").ToList<string>().ForEach(d =>
                    {
                        Task t = Task.Run(() =>
                                {
                                    System.IO.Directory.GetFiles(d,"*.*",System.IO.SearchOption.TopDirectoryOnly).ToList<string>().ForEach(f =>
                                    {
                                        richTextBox1.WriteLine("AddFile: {0} ", f);
                                    });
                                });
                        t.Wait();
                    });
            
            });t0.Wait();
            this.Write("Finished:{0}", clsCountDown.Final);
        }


วัตถุประสงค์คือต้องการให้ Task มันรันพร้อมกัน และ ดูเวลาว่าเสร็จกี่นาที กี่วินาที ประมาณนี้ครับ
แต่รันแล้วเหมือนว่ามันจะรันไปทีละ Task มากกว่า เลยวงสัยว่าผมเขียนโค้ดถูกรึปล่าวครับ



Tag : .NET, C#, VS 2013 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-04-21 17:10:54 By : lamaka.tor View : 300 Reply : 5
 

 

No. 1



โพสกระทู้ ( 8,662 )
บทความ ( 2 )



สถานะออฟไลน์


ไม่ค่อยได้ใช้ซะด้วย ถ้าจำไม่ผิด wait() คำสั่งนี้ คือรอ จนทำเสร็จ

ดังนั้นน่าจะต้องใช้ setTimeout ครอบ ก่อนเพื่อให้ ทำงานพร้อมกัน






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-21 18:29:55 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 4,070 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-04-21 18:29:55
รายละเอียดของการตอบ ::
พอจะมีตัวอย่างไม๊ครับ

ขอบคุณล่วงหน้าครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-21 22:03:00 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 4,070 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

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
 


 

No. 4



โพสกระทู้ ( 8,662 )
บทความ ( 2 )



สถานะออฟไลน์


เอาเป็น 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
 


 

No. 5



โพสกระทู้ ( 4,070 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 4 เขียนโดย : Chaidhanan เมื่อวันที่ 2018-04-22 07:16:05
รายละเอียดของการตอบ ::
ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-04-22 12:21:37 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# WinApp ช่วยดูโค้ดหน่อยครับ ว่าตกลงแบบนี้มันรันพร้อนกันรึปล่าว
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม , สำนักงานบัญชี , รับจดทะเบียนบริษัท , Pangpond , รถมือสอง

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2020 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่