Witam uczę się programowanie w C# używam środowiska programistycznego „Microsoft Visual Studio Express 2013 for Windows Desktop”. Nie mogę sobie poradzić z wielowątkowością i klasami. Nie umiem wysyłać wiadomości między nimi. Próbowałem różnych rzeczy z poradników i tutoriali ale nic mi nie wychodzi. Mam dwa problemy z którymi nie mogę sobie poradzić, nie wiem jak je rozwiązać.
- Chcę wypisać komunikaty z nowej klasy uruchomionej w oddzielnym wątku w textbox w głównym wątku na formie.
- Jak zrobić licznik wątków z numerem wątku ?. Chce żeby podczas uruchamiania kolejnej klasy automatycznie licznik zwiększał wartość o jeden a w klasie był przechowywany numer wątku – indeks. Automatycznie jak wątek się zakończy to licznik ma się zmniejszyć.
Próbowałem to zrobić na wiele sposobów ale nic mi nie wychodzi. Po dwóch dniach szukania i próbowanie mam dość. Mógł by mi ktoś pokazać jak to zrobić na tym szkielecie ?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace watektest
{
public partial class Form1 : Form
{
int liczbaWatkow = 0;
watek nowaKlasa1 = null;
watek nowaKlasa2 = null;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
nowaKlasa1 = new watek("jakis tekst");
nowaKlasa2 = new watek("jakis tekst");
}
public void dodajWiadomosc(string tekst)
{
textBox1.Text += textBox1 + Environment.NewLine;
}
private void button2_Click(object sender, EventArgs e)
{
nowaKlasa1.ustawWiadomosc("jakis tekst 2");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace watektest
{
class watek
{
int numerWatku = -1;
int licznik = 1000;
private string tekst;
public watek(string wiadomosc)
{
tekst = wiadomosc;
wykonuj();
}
public void ustawWiadomosc(string wiadomosc)
{
tekst = wiadomosc;
}
public void wyslijWiadomosc(string tekst)
{
//Form1.dodajWiadomosc(tekst);
}
public void wykonuj()
{
while (licznik>0)
{
licznik--;
wyslijWiadomosc("watek: " + numerWatku.ToString() + ", licznik: " + licznik.ToString() + ", wiadomosc: " + tekst);
}
wyslijWiadomosc("koniec Watku: " + numerWatku.ToString());
}
}
}