วิธีการสร้างเธรด โดยใช้ Visual c#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 815804 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

คุณสามารถเขียนโปรแกรมประยุกต์ multithreaded ใน Microsoft Visual c# .NET หรือใน Microsoft Visual c# บทความนี้อธิบายวิธีแบบง่าย ๆ Visual c# แอพพลิเคชันสามารถสร้าง และจัดการเธรด

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่คุณต้องการ:
  • Microsoft Windows 2000, Microsoft Windows XP หรือ Microsoft Windows Server 2003
  • Microsoft Visual c# .NET หรือ Microsoft Visual c# 2005
บทความนี้อนุมานว่า คุณไม่คุ้นเคยกับหัวข้อต่อไปนี้:
  • visual c# เขียนโปรแกรม
  • สภาพแวด visual Studio .NET โครงพัฒนาล้อม (IDE) หรือ Visual Studio 2005 IDE

สร้างโปรแกรมประยุกต์ Visual c# กับเธรด

  1. เริ่ม Microsoft Visual Studio .NET, Microsoft Visual Studio 2005 หรือ Edition Express 2005 Microsoft Visual c#
  2. สร้างโครงการ Visual c# Windows Application ใหม่ชื่อ ThreadWinApp
  3. เพิ่มคำปุ่มควบคุมไปยังแบบฟอร์ม โดยค่าเริ่มต้น ชื่อปุ่มbutton1.
  4. เพิ่มคำProgressBarคอมโพเนนต์ให้กับฟอร์ม โดยค่าเริ่มต้น ชื่อแถบความคืบหน้าProgressBar1.
  5. คลิกขวาที่รูปแบบ และจากนั้น คลิกการดูรหัส.
  6. เพิ่มคำสั่งต่อไปนี้เพื่อเริ่มต้นของแฟ้ม:
    using System.Threading;
  7. เพิ่มต่อไปนี้คลิกตัวจัดการเหตุการณ์สำหรับbutton1:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	MessageBox.Show("This is the main thread");
    }
  8. เพิ่มตัวแปรต่อไปนี้เพื่อform1คลาส:
    private Thread trd;
    
  9. เพิ่มวิธีการต่อไปนี้ไปform1คลาส:
    private void ThreadTask()
    {
    	int stp;
    	int newval;
    	Random rnd=new Random();
    
    	while(true)
    	{
    		stp=this.progressBar1.Step*rnd.Next(-1,2);
    		newval = this.progressBar1.Value + stp;
    
    		if (newval > this.progressBar1.Maximum)
    			newval = this.progressBar1.Maximum;
    		else if (newval < this.progressBar1.Minimum)
    			newval = this.progressBar1.Minimum;
    		
    		this.progressBar1.Value = newval;
    
    		Thread.Sleep(100);
    	}
    }
    หมายเหตุ:นี่คือรหัสที่ underlies เธรด รหัสนี้เป็นลูป infinite ที่เพิ่มโดยการสุ่มหรือ decrements ค่าในProgressBar1และรอมิลลิวินาที 100 แล้ว ก่อนที่จะดำเนินต่อ
  10. เพิ่มต่อไปนี้การโหลดตัวจัดการเหตุการณ์สำหรับform1. รหัสนี้สร้างเธรดใหม่ ทำเธรดเธรดพื้นหลัง แล้ว เริ่มการทำงานเธรด
    private void Form1_Load(object sender, System.EventArgs e)
    {
    	Thread trd = new Thread(new ThreadStart(this.ThreadTask));
    	trd.IsBackground = true;
    	trd.Start();
    }

ตรวจสอบการทำให้ งาน

  1. สร้าง และเรียกใช้โปรแกรมประยุกต์ สังเกตว่า ค่าในProgressBar1เปลี่ยนแบบสุ่ม เธรดใหม่ในการดำเนินงานอยู่
  2. การสาธิตว่า เธรดหลักจะขึ้นอยู่กับเธรดที่ค่าของการเปลี่ยนแปลงProgressBar1คลิกปุ่มบนแบบฟอร์ม คุณได้รับกล่องโต้ตอบกับข้อความแสดงข้อผิดพลาดต่อไปนี้:
    This is the main thread
กำลังรอให้ป้อนข้อมูล สังเกตว่า ค่าในProgressBar1ทำการเปลี่ยนแปลง

แก้ไข

ในโปรแกรมประยุกต์ที่ซับซ้อนมาก ตรวจสอบให้แน่ใจว่า คุณซิงโครไนส์หลายเธรดเมื่อคุณเข้าถึงตัวแปรที่ใช้ร่วมกัน สำหรับข้อมูลเพิ่มเติม ให้ดูล็อกงบดุลและหัวข้อเกี่ยวข้องในการ Visual c# .NET เอกสารประกอบที่วิธีใช้แบบออนไลน์

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดไปเว็บไซต์ต่อไปนี้ของ Microsoft หรือเอกสารประกอบการ SDK ของ.NET Framework:
"เธรดคลาส"
.aspx http://msdn2.microsoft.com/en-us/library/system.threading.thread (vs.71)

คุณสมบัติ

หมายเลขบทความ (Article ID): 815804 - รีวิวครั้งสุดท้าย: 23 กันยายน 2554 - Revision: 5.0
ใช้กับ
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Keywords: 
kbnamespace kbthreadsync kbthread kbhowtomaster kbmt KB815804 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:815804

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com