Έναρξη νήματος:
Ο εκπρόσωπος ThreadStart ορίζεται ως void ThreadStart(), που σημαίνει ότι η μέθοδος που εκτελείται δεν μπορεί να έχει παραμέτρους. ThreadStart threadStart=new ThreadStart(Υπολογισμός); Νήμα νήματος = νέο νήμα (threadStart); νήμα. Έναρξη(); δημόσιο κενό Υπολογισμός() { διπλή διάμετρος=0,5; Console.Write("Το εμβαδόν του κύκλου με διάμετρο {0} είναι {1}"Διάμετρος,Διάμετρος*Math.PI); } Εδώ χρησιμοποιούμε έναν εκπρόσωπο που ορίζει έναν τύπο ThreadStart, ο οποίος ορίζει τη μέθοδο που πρέπει να εκτελέσει το νήμα: Υπολογισμός, στον οποίο υπολογίζεται η περιφέρεια ενός κύκλου με διάμετρο 0.5 και εξέρχεται. Αυτό αποτελεί το απλούστερο παράδειγμα multithreading, το οποίο σε πολλές περιπτώσεις είναι αρκετό
ΠαράμετροςThreadStart: Το ParameterThreadStart ορίζεται ως void ParameterizedThreadStart(κατάσταση αντικειμένου) και η συνάρτηση εκκίνησης του νήματος που ορίζεται χρησιμοποιώντας αυτόν τον πληρεξούσιο μπορεί να δεχτεί μια παράμετρο εισόδου, για παράδειγμα:
ParameterizedThreadStart threadStart=new ParameterizedThreadStart(Υπολογισμός) Νήμα νήματος=νέο νήμα() ; νήμα. Έναρξη(0.9); δημόσιο κενό Υπολογισμός(αντικείμενο arg)
{ διπλή διάμετρος=διπλή (arg); Console.Write("Το εμβαδόν του κύκλου με διάμετρο {0} είναι {1}"Διάμετρος,Διάμετρος*Math.PI);
}
Η μέθοδος Υπολογισμός έχει μια παράμετρο αντικειμένου τύπου, αν και υπάρχει μόνο μία παράμετρος, και είναι επίσης τύπος αντικειμένου, και πρέπει ακόμα να μετατραπεί κατά τη χρήση της, αλλά ευτυχώς, μπορεί να υπάρχουν παράμετροι και συνδυάζοντας πολλές παραμέτρους σε μια κλάση και στη συνέχεια περνώντας την παρουσία αυτής της κλάσης ως παράμετρο, μπορείτε να επιτύχετε μεταφορά πολλαπλών παραμέτρων. Σαν τι:
κλάση AddParams
{ δημόσιο int α, β;
public AddParams(int numb1, int numb2) { α = numb1; β = numb2; }
} #endregion
Πρόγραμμα τάξης
{ στατικό κενό Main(string[] args) { Console.WriteLine("***** Προσθήκη με αντικείμενα νήματος *****"); Console.WriteLine("Αναγνωριστικό νήματος στο Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = νέα AddParams(10, 10); Νήμα t = νέο νήμα(νέο ParameterizedThreadStart(Προσθήκη)); t.Έναρξη(ap); Κονσόλα.ReadLine(); }
#region Προσθήκη μεθόδου στατικό κενό Προσθήκη(δεδομένα αντικειμένου) { if (τα δεδομένα είναι AddParams) { Console.WriteLine("Αναγνωριστικό νήματος στο Main(): {0}", Thread.CurrentThread.ManagedThreadId);
AddParams ap = (AddParams)δεδομένα; Console.WriteLine("{0} + {1} είναι {2}", ap.a, ap.b, ap.a + ap.b)· } } #endregion
}
} |