Jako, że jest to mój pierwszy post witam wszystkich :)
Programując w BCB c++ "główny program" mogę powiadomić o zakończeniu wątku przekazując mu metodę jaka na zostać wywalana gdy ten się zakończy działanie np:
W uproszczeniu
```cpp
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
WatSpr = new WatekSprawdz(true);
WatSpr ->OnTerminate = MyOnTerminate;
WatSpr ->Resume();
this->ileWatkow++;
}
void __fastcall TForm1::MyOnTerminate(TObject *Sender)
{
this->ileWatkow --;
StatusBar1->Panels->Items[1]->Text="Wątków: "+IntToStr(this->ileWatkow);
}
Chodzi o to jak to zrealizować w C#
Watek testowy tworze następującym kodem:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
int iNrWtk = 0;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyTestWatek mywatek = new MyTestWatek();
mywatek.mytextBox = this.textBox1;
mywatek.iNrListViev = iNrWtk;
Thread watek = new Thread(mywatek.CialoWatku);
watek.Start();
iNrWtk++;
}
}
}
// Klasa testowa obslugiwana w ramach watku
public class MyTestWatek
{
public string name;
public int iNrListViev;
public TextBox mytextBox;
public delegate void UpdateTextCallback(string message);
public void CialoWatku()
{
for (int i = 0; i < 10; i++)
{
string doinfo = "NR dla ListViev: " + iNrListViev.ToString() +" - jj:"+ i.ToString();
mytextBox.BeginInvoke(new UpdateTextCallback(UpdateText), new object[] { doinfo });
Thread.Sleep(100);
}
}
private void UpdateText(string message)
{
mytextBox.AppendText(message + Environment.NewLine);
}
}
Generalnie chodzi o to, że watki mają być tworzone w metodzie onTime która ma interval na 100 ms jeśli powiedzmy 10 watek zakończy pracę iNrWtk = 9 ma być tworzony nowy tak by cały cas zadana liczba watkow pracowała.
Jak to zrealizować w C# ?