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

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 815804 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

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#.

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

  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();
    }

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.

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.

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:
"Thread Class"
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemThreadingThreadClassTopic.asp

Właściwości

Numer ID artykułu: 815804 - Ostatnia weryfikacja: 10 października 2006 - Weryfikacja: 2.5
Informacje zawarte w tym artykule dotyczą:
  • 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
Słowa kluczowe: 
kbnamespace kbthreadsync kbthread kbhowtomaster KB815804

Przekaż opinię

 

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