Я работаю над серверной программой, которая использует многопоточность. Проблема в том, что есть несколько классов и множество потоков, которым нужен доступ к определенному TextBox. (TbLog)
Метод (Log) выглядит так:
using System;
using System.Windows.Forms;
using System.ComponentModel;
namespace Server
{
public delegate void Logs(string message);
public partial class Menu : Form
{
public Menu()
{
InitializeComponent();
}
public void Log(string message)
{
if (this.tbLog.InvokeRequired)
this.tbLog.BeginInvoke(new MethodInvoker(delegate() { tbLog.Invoke(new Logs(Log)); }
));
else
this.tbLog.Text += DateTime.Now + ": " + message + Environment.NewLine;
}
}
}
Конечно, я пробовал другие вещи, и это не одна из моих лучших попыток. Проблема в том, что даже если я вызываю метод из другого потока / класса следующим образом:
namespace Server.Connections
{
class packetSend
{
static bool sendPacket(string rawPacket)
{
Menu menu = new Menu();
menu.Log("I'm a message");
return true;
}
}
}
- будет работать только из основного потока. И я думаю, это как-то связано с пространством имен или потому, что я использую:
Menu menu = new Menu();
Ответ, вероятно, очевиден, но я его не вижу. Вздох
Помощь будет очень признательна.