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

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 815804 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Μπορείτε να γράψετε εφαρμογές πολλαπλών νημάτων στο 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. Προσθέστε την ακόλουθη μεταβλητή για τοΦόρμα1CLASS:
    private Thread trd;
    
  9. Προσθέστε την ακόλουθη μέθοδο για τοΦόρμα1CLASS:
    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. Προσθέστε τα εξήςΦόρτωσηπρόγραμμα χειρισμού συμβάντων γιαΦόρμα1. Αυτός ο κώδικας δημιουργεί ένα νέο νήμα, καθιστά το νήμα ένα νήμα παρασκηνίου και μετά να ξεκινήσει το νήμα.
    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 .NET C# ηλεκτρονική Βοήθεια στην τεκμηρίωση.

Αναφορές

Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web ή της τεκμηρίωσης του .NET Framework SDK:
"Νήμα κλάσης"
.aspx http://msdn2.Microsoft.com/en-us/library/System.Threading.thread (vs.71)

Ιδιότητες

Αναγν. άρθρου: 815804 - Τελευταία αναθεώρηση: Παρασκευή, 23 Σεπτεμβρίου 2011 - Αναθεώρηση: 3.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Λέξεις-κλειδιά: 
kbnamespace kbthreadsync kbthread kbhowtomaster kbmt KB815804 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της 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