C #, jak osiągnąć coś w bieżącym wątku utworzonym w innym wątku?
Piszę aplikację klient / serwer na czacie za pomocą c # i mam problem z wątkowaniem. Napisałem ten prosty kod, aby pokazać mój problem.
Użyłem thread_1 do pokazania formularza, ale po prostu pokazałem to sekundę (może thread_1 zakończył i zamknął formularz, ale IsAlive powiedział, że żyje!). Thread_2 próbuje dotrzeć do texBox, który został utworzony na głównym wątku, ale pokazuje mi to:
„Nieprawidłowa operacja wątków: kontrola„ textBox2 ”uzyskiwana z wątku innego niż wątek, w którym została utworzona.”
Nie wiem jak rozwiązać pierwszy problem, ale rozwiązałem drugi problem z BackgroundWorker, ale lubię to robić za pomocą wątku. Czy jest jakiś sposób?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Thread t1;
Thread t2;
private void button1_Click(object sender, EventArgs e)
{
t1 = new Thread(doThread1);
t1.Name = "thread_1";
t2 = new Thread(doThread2);
t2.Name = "thread_2";
t1.Start();
t2.Start();
MessageBox.Show(t1.IsAlive.ToString());
}
private void doThread1()
{
Form frm2 = new Form();
frm2.Show();
}
private void doThread2()
{
try
{
for (int j = 10000; j > 0; j--)
textBox.Text = j.ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}