Tworzenie wątku przy użyciu języka Visual C#
Aplikacje wielowątkowe można pisać w programie Microsoft Visual C# .NET lub w języku 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 dodatki Service Pack, których potrzebujesz:
- 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 programistyczne programu Visual Studio (IDE) lub środowisko IDE programu Visual Studio
Ten artykuł odnosi się do przestrzeni System.Threading
nazw biblioteki klas .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 pozycję Wyświetl kod.
Dodaj następującą instrukcję na początku pliku:
using System.Threading;
Dodaj następujący
button1_Click
program 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ą
Form1
do klasy:private Thread trd;
Dodaj następującą metodę do
Form1
klasy: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
Jest to kod, który stanowi podstawę wątku. Ten kod jest nieskończoną pętlą, która losowo zwiększa lub dekrementuje wartość w pasku ProgressBar1, a następnie czeka 100 milisekund, zanim będzie kontynuowana.
Dodaj następujący
Form1_Load
program 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 pasku Postępu1 zmienia się losowo. Jest to nowy wątek w działaniu.
Aby pokazać, że główny wątek jest niezależny od wątku, który zmienia wartość paska ProgressBar1, kliknij przycisk w formularzu. Zostanie wyświetlone okno dialogowe z następującym komunikatem o błędzie:
Jest to główny wątek
Poczekaj na dane wejściowe. Zwróć uwagę, że wartość w obszarze ProgressBar1kontynuuje zmianę.
Rozwiązywanie problemów
W bardziej złożonych aplikacjach upewnij się, że synchronizujesz wiele wątków podczas uzyskiwania dostępu do zmiennych udostępnionych. Aby uzyskać więcej informacji, zobacz instrukcję blokady i powiązane tematy w dokumentacji pomocy online platformy .NET języka Visual C#.
Informacje
Aby uzyskać więcej informacji, zobacz Klasa wątków.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla