Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 19083|Απάντηση: 0

[Πηγή] Το ThreadStart και το ParameterizedThreadStart είναι διαφορετικά

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 14/11/2016 10:25:44 π.μ. | | |
Έναρξη νήματος:

Ο εκπρόσωπος 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
}
}




Προηγούμενος:.net/c# Ανιχνεύστε avatar χρηστών, αρπάξτε avatar QQ
Επόμενος:.net/c# υπολογίζει την ηλικία του αυτοκινήτου του οδηγού
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com