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#.
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
Utworzenie aplikacji języka Visual C# z wątkami
- Uruchom program Microsoft Visual Studio .NET lub Microsoft Visual Studio 2005.
- Utwórz nowy projekt aplikacji Visual C# dla systemu Windows o nazwie ThreadWinApp.
- Dodaj do formularza formant Button. Domyślnie otrzymuje on nazwę Button1.
- Dodaj do formularza składnik ProgressBar. Domyślnie otrzymuje on nazwę ProgressBar1.
- Kliknij formularz prawym przyciskiem myszy, a następnie kliknij przycisk View Code (Wyświetl kod).
- Dodaj następującą instrukcję na początku pliku:
- 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");
} - Dodaj następującą zmienną do klasy Form1:
- 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. - 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();
}
Sprawdzanie działania
- Skompiluj i uruchom aplikację. Zauważ, że wartość paska postępu ProgressBar1 zmienia się losowo. To jest działanie nowego wątku.
- 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:
Poczekaj na dane wejściowe. Zauważ, że wartość paska postępu
ProgressBar1 wciąż się zmienia.
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.
Aby uzyskać więcej informacji, odwiedź następującą witrynę firmy Microsoft w sieci Web lub zapoznaj się z zestawem .NET Framework SDK: