Siemka!
W jaki sposób wysłać z jednego wątku do kolejnego wiadomość? tak żeby ten nowy ta wiadomość miał w jakiś polu, i można było ja wyświetlić czy przekazać gdzieś dalej? Nie wiem jak tego dokonać proszę o pomoc jakiś znających się na temacie programistów, dla Was to pewnie kilka linijek
Z góry dzięki
Pozdrawiam
Pytanie jest bardzo ogólne. Zatem daję bardzo ogólną odpowiedź: synchronizacja. Szukaj pod tym hasłem.
To chyba nie o to :) Chciałbym aby jeden wątek wysłał do drugiego wiadomość, a ten ją wyświetlił z dopiskiem ze jest to wiadomość od wątku o nazwie
Pokaż co już zrobiłeś i w którym miejscu utknąłeś.
Zapożyczony z internetu
using System;
using System.Windows.Forms;
using System.Threading;
namespace CrossThreadCalls
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void ObjectDelegate(object obj);
private void button1_Click(object sender, EventArgs e)
{
ObjectDelegate del = new ObjectDelegate(UpdateTextBox);
del.Invoke("Hello from button1_Click!");
Thread th = new Thread(new ParameterizedThreadStart(WorkThread));
th.Start(del);
}
private void WorkThread(object obj)
{
ObjectDelegate del = (ObjectDelegate)obj;
del.Invoke("Hello from WorkThread!");
}
private void UpdateTextBox(object obj)
{
if (InvokeRequired)
{
ObjectDelegate method = new ObjectDelegate(UpdateTextBox);
Invoke(method, obj);
return;
}
string text = (string)obj;
textBox1.Text += text + "\r\n";
}
}
}
wątek zwraca wiadomosc chciałbym ze y ta wiadomosc wyswietlac w innym watku
w jakim innym wątku? Masz tutaj dwa wątki - poboczny i główny. Wysyłasz wiadomość z pobocznego do głównego i główny ją wyświetla więc to co chciałeś zrobić działa. Może napisz DOKŁADNIE o co Ci chodzi
Po wykonaniu:
del.Invoke("Hello from WorkThread!");
wątek się kończy.
Może zapomniałeś dodać pętle?
Tak jak pisałem, pytanie jest bardzo ogólne. Invoke jest tylko jednym ze sposobów. W zależności od tego co chcesz zrobić i jak to wszystko ma działać należy wybrać odpowiednią metodę. Jest ich na prawdę sporo i jedne pasują bardziej do jednych rzeczy, inne do innych. Masz do dyspozycji min. event'y (tak, są thread-safe), BackgroudWorkera raportującego progres, kontenery (SynchronizedCollection), wszelakie muteksy, sygnały i wiele innych.