Jesteś obecnie w trybie offline. Czekamy na ponowne połączenie z Internetem.

Jak stworzyć wątek, używając języka Visual C#

Wersja tego artykułu dla programu Microsoft Visual Basic .NET: 315577.


W tym artykule występują odwołania do następujących nazw z klas bibliotek programu Microsoft .NET Framework:
  • System.Threading


W TYM ZADANIU

Streszczenie
Aplikacje wielowątkowe można pisać w języku Microsoft Visual C# .NET lub w języku Microsoft Visual C#. W tym artykule jest opisany sposób tworzenia wątków i zarządzania nimi przez prostą aplikację Visual C#.

Powrót do początku

Wymagania

Na następującej liście uwzględniono podstawowe składniki zalecanego i niezbędnego sprzętu, oprogramowania, infrastruktury sieciowej i dodatków Service Pack:
  • System Microsoft Windows 2000, Microsoft Windows XP lub Microsoft Windows Server 2003
  • Program Microsoft Visual C# .NET lub Microsoft Visual C# 2005
W tym artykule założono, że użytkownik zapoznał się z następującymi zagadnieniami:
  • Programowanie w języku Visual C#
  • Interfejs Integrated Development Environment (IDE) programu Visual Studio .NET lub Visual Studio 2005
Powrót do początku

Utworzenie aplikacji języka Visual C# z wątkami

  1. Uruchom program Microsoft Visual Studio .NET lub Microsoft Visual Studio 2005.
  2. Utwórz nowy projekt aplikacji Visual C# dla systemu Windows o nazwie ThreadWinApp.
  3. Dodaj do formularza formant Button. Domyślnie otrzymuje on nazwę Button1.
  4. Dodaj do formularza składnik ProgressBar. Domyślnie otrzymuje on nazwę ProgressBar1.
  5. Kliknij formularz prawym przyciskiem myszy, a następnie kliknij przycisk View Code (Wyświetl kod).
  6. Dodaj następującą instrukcję na początku pliku:
    using System.Threading;
  7. Dodaj następującą procedurę obsługi zdarzenia Click dla formantu Button1:
    private void button1_Click(object sender, System.EventArgs e){	MessageBox.Show("To jest wątek główny");}
  8. Dodaj następującą zmienną do klasy Form1:
    private Thread trd;
  9. Dodaj następującą zmienną do klasy 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);	}}
    Uwaga: To jest kod będący podstawą wątku. Jest to pętla nieskończona, która losowo zwiększa lub zmniejsza wartość formantu ProgressBar1, a następnie odczekuje 100 milisekund przed wznowieniem działania.
  10. Dodaj następującą procedurę obsługi zdarzenia Load do formularza Form1. Ten kod tworzy nowy wątek, powoduje, że działa on w tle, a następnie uruchamia wątek.
    private void Form1_Load(object sender, System.EventArgs e){	Thread trd = new Thread(new ThreadStart(this.ThreadTask));	trd.IsBackground = true;	trd.Start();}
Powrót do początku

Sprawdzanie działania

  1. Skompiluj i uruchom aplikację. Zauważ, że wartość paska postępu ProgressBar1 zmienia się losowo. To jest działanie nowego wątku.
  2. Aby wykazać, że główny wątek jest niezależny od wątku zmieniającego wartość paska postępu ProgressBar1, kliknij przycisk w formularzu. Pojawi się okno dialogowe z następującym komunikatem o błędzie:
    To jest wątek główny.
Poczekaj na dane wejściowe. Zauważ, że wartość paska postępu ProgressBar1 wciąż się zmienia.

Powrót do początku

Rozwiązywanie problemów

W bardziej złożonych aplikacjach należy zapewnić synchronizację wielu wątków, które współużytkują zmienne. Aby uzyskać więcej informacji, zobacz opis instrukcji lock oraz pokrewne zagadnienia w Pomocy online programu Visual C# .NET.

Powrót do początku
Materiały referencyjne
Aby uzyskać więcej informacji, odwiedź następującą witrynę firmy Microsoft w sieci Web lub zapoznaj się z zestawem .NET Framework SDK:
Właściwości

Identyfikator artykułu: 815804 — ostatni przegląd: 10/10/2006 20:02:51 — zmiana: 2.5

  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005
  • Microsoft ADO.NET 1.0
  • Microsoft Common Language Runtime (składnik platformy .NET Framework) 1.0
  • kbnamespace kbthreadsync kbthread kbhowtomaster KB815804
Opinia
js"> + "//c.microsoft.com/ms.js'" + "'><\/script>");