เกี่ยวกับพารามิเตอร์เธรด (2.0) "ค่าส่งคืน" และการระงับเธรด
1. พารามิเตอร์เธรด:
บางครั้งคุณต้องการส่งข้อมูลบางอย่างไปยังเธรดเสริม ที่นี่ คุณต้องใช้
ตัวอย่างการมอบหมายของ ParameterizedThreadStart:
private void btRunThread_Click(object
sender, EventArgs e)
{
Thread t = new Thread(new parameterizedThreadStart(this.ThreadRun));
(100)
;
ThreadRun ส่วนตัวเป็นโมฆะ (วัตถุ o)
{
this.lbCompleted.Inrigg ((MethodInviver) ผู้รับมอบสิทธิ์ { this.lbCompleted.Text = System.Convert.ToString (o); })
;
2. ฟังก์ชั่นที่คล้ายกันสามารถทำได้โดยประมาณผ่านพรอกซี ตัวอย่าง:
คลาสโปรแกรม
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new
MyDlg(DlgMethod));
ThreadRun)
);
Console.WriteLine (
"
เธรดที่สองเสร็จสิ้น"
)
;
ส่วนตัวเป็นโมฆะคงที่ DlgMethod(int i)
{
Console.WriteLine("ผลลัพธ์ของเธรดที่สอง:{0}", i
)
;
ผู้แทนสาธารณะถือเป็นโมฆะ MyDlg (int i);
คลาส ThreadClass
{
MyDlg myDlg ส่วนตัว;
ThreadClass สาธารณะ (MyDlg pDlg)
{
this.myDlg = pDlg
;
โมฆะสาธารณะ ThreadRun ()
{
int รวม = 0;
สำหรับ (int i = 0; i <100; i ++)
{
รวม + = i
;
ถ้า
(myDlg != null)
{
myDlg
(รวม)
;
3. การระงับเธรด:
(1) วิธีการ .join
หมายเหตุ MSDN: ในขณะที่ดำเนินการประมวลผลปั๊มข้อความ COM และ SendMessage มาตรฐานต่อไป เธรดที่เรียกจะถูกบล็อกจนกว่าเธรดจะสิ้นสุดลง
ฉันสับสนและลองด้วยตัวเอง ดูเหมือนว่าหลังจากเธรดเรียกวิธีการเข้าร่วม เธรดจะยึดเวลา CPU ทั้งหมดจนกว่างานของเธรดจะเสร็จสิ้น ไม่รู้ว่าเป็นเช่นนี้หรือเปล่า?
(
2) วิธีการยกเลิก
จะยุติเธรดทันที
(3) ตัวอย่างการกำหนดตัวระบุ
:
class Program
{
private staticbool
stop
;
เธรด t = เธรดใหม่ (ThreadStart ใหม่ (ThreadRun));
t.Start ();
Thread.Sleep (100)
;
คอนโซลอ่าน(
}
ThreadRun คงเป็นโมฆะ ()
{
ในขณะที่
(
! หยุด)
{
Console.WriteLine ("ทำงานบางอย่าง ... ")
;
http://www.cnblogs.com/KissKnife/archive/2006/10/03/520463.html