Tworzenie wątku przy użyciu języka Visual C#
Aplikacje wielowątkowy można pisać na platformie Microsoft Visual C# .NET lub Visual C#. W tym artykule opisano, jak prosta aplikacja języka Visual C# może tworzyć wątki i zarządzać nimi.
Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 815804
Wymagania
Na poniższej liście przedstawiono zalecany sprzęt, oprogramowanie, infrastrukturę sieciową i wymagane dodatki Service Pack:
- Windows lub Windows Server
- Visual C# .NET lub Visual C#
W tym artykule założono, że znasz następujące tematy:
- Programowanie w języku Visual C#
- Zintegrowane środowisko projektowe (IDE) programu Visual Studio lub Visual Studio
W tym artykule odwołuje się do przestrzeni nazw System.Threading
biblioteki klas programu .NET Framework .
Tworzenie aplikacji Visual C# z wątkami
Uruchom program Visual Studio .NET, Visual Studio lub Visual C# Express Edition.
Utwórz nowy projekt aplikacji systemu Windows w języku Visual C# o nazwie ThreadWinApp.
Dodaj kontrolkę Przycisk do formularza. Domyślnie przycisk ma nazwę Button1.
Dodaj składnik ProgressBar do formularza. Domyślnie pasek postępu ma nazwę ProgressBar1.
Kliknij prawym przyciskiem myszy formularz, a następnie kliknij polecenie Wyświetl kod.
Dodaj następującą instrukcję na początku pliku:
using System.Threading;
Dodaj następującą
button1_Click
procedurę obsługi zdarzeń dla przycisku Button1:private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show("This is the main thread"); }
Dodaj następującą zmienną do
Form1
klasy:private Thread trd;
Dodaj następującą metodę 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 16.
Jest to kod, który ujmuje wątek. Ten kod jest nieskończoną pętlą, która losowo zwiększa lub dekrementuje wartość w kodzie ProgressBar1, a następnie czeka 100 milisekund przed kontynuowaniem.
Dodaj następującą
Form1_Load
procedurę obsługi zdarzeń dla formularza Form1. Ten kod tworzy nowy wątek, tworzy wątek 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(); }
Sprawdź, czy działa
Skompiluj i uruchom aplikację. Zwróć uwagę, że wartość w obszarze ProgressBar1 zmienia się losowo. Jest to nowy wątek w operacji.
Aby zademonstrować, że główny wątek jest niezależny od wątku, który zmienia wartość ProgressBar1, kliknij przycisk w formularzu. Zostanie wyświetlone okno dialogowe z następującym komunikatem o błędzie:
Jest to główny wątek
Zaczekaj na wejście. Zwróć uwagę, że wartość w obszarze ProgressBar1continues zmienia się.
Rozwiązywanie problemów
W bardziej złożonych aplikacjach upewnij się, że podczas uzyskiwania dostępu do zmiennych udostępnionych synchronizujesz wiele wątków. Aby uzyskać więcej informacji, zobacz instrukcję blokady i powiązane tematy w dokumentacji pomocy online programu Visual C# .NET.
Informacje
Aby uzyskać więcej informacji, zobacz Klasa wątku.