Wysłanie z wątku do wątku wiadomości tekstowej

0

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

0

Pytanie jest bardzo ogólne. Zatem daję bardzo ogólną odpowiedź: synchronizacja. Szukaj pod tym hasłem.

0

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

0

Pokaż co już zrobiłeś i w którym miejscu utknąłeś.

0

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

0

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

0

Po wykonaniu:
del.Invoke("Hello from WorkThread!");
wątek się kończy.
Może zapomniałeś dodać pętle?

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1