Τρόπος δημιουργίας ενός νήματος, χρησιμοποιώντας το Visual C#

Για την Microsoft Visual Basic .NET έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα
315577 .


Αυτό το άρθρο αναφέρεται από τα παρακάτω πεδία ονομάτων βιβλιοθήκη κλάσης του Microsoft .NET Framework:
  • System.Threading


ΣΕ ΑΥΤΉΝ ΤΗΝ ΕΡΓΑΣΊΑ

Σύνοψη

Μπορείτε να γράψετε εφαρμογές πολλαπλών νημάτων στο Microsoft Visual C# .NET ή σε Microsoft Visual C#. Αυτό το άρθρο περιγράφει τον τρόπο μια απλή εφαρμογή Visual C# να δημιουργήσετε και να διαχειριστείτε νήματα.

Επιστροφή στην κορυφή

Απαιτήσεις

Η ακόλουθη λίστα περιγράφει το υλικού που συνιστώνται, λογισμικό, υποδομή δικτύου και τα service pack που χρειάζεστε:
  • Τα 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 ή το Microsoft Visual C# 2005 Express Edition.
  2. Δημιουργήστε ένα νέο έργο Visual C# Windows εφαρμογή με το όνομα 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);
    }
    }
    Σημείωση Αυτός είναι ο κωδικός που είναι υποκείμενος στο νήμα. Αυτός ο κωδικός είναι ατέρμονα βρόχο που τυχαία αυξάνεται ή μειώνεται η τιμή του
    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 συνεχίζει να αλλάζει.

Επιστροφή στην κορυφή

Αντιμετώπιση προβλημάτων

Σε πιο σύνθετες εφαρμογές, βεβαιωθείτε ότι κάνετε συγχρονισμό πολλών νημάτων κατά την πρόσβαση σε κοινόχρηστο μεταβλητές. Για περισσότερες πληροφορίες, δείτε την πρόταση lock και σχετικά θέματα στην τεκμηρίωση της Visual C# .NET ηλεκτρονική Βοήθεια.

Επιστροφή στην κορυφή

Αναφορές

Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web ή την τεκμηρίωση του .NET Framework SDK:
Ιδιότητες

Αναγνωριστικό άρθρου: 815804 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια