alles funktioniert bis auf die tatsache, das wenn ich ein event in der klasse auslöse, das dann der fehler:
Cross-thread operation not valid: Control 'Form1' accessed from a thread other than the thread it was created on.
auftaucht.
dank forumssuche weiß ich jetzt das ich da mit invoke ranmuss.
jedoch weiß ich nicht wirklich wie, da die klasse in dem das event ausgelöst wird eine andere ist als die klasse die die werte benötigt.
ein beispiel:
private Tcp_Ip_Server server;
private Tcp_Ip_client client;
private void Form1_Load(object sender, EventArgs e)
{
server = new Tcp_Ip_Server();
server.start_listening("20000");
server.Empfange_Daten += new Tcp_Ip_Server.Daten_Event(this.daten_da);
client = new Tcp_Ip_client();
client.connect_to("127.0.0.1","20000");
}
private void daten_da(object sender,daten_eventargs e)
{
this.Text = "server: " + e.message;
}
private void button1_Click(object sender, EventArgs e)
{
client.send("test1");
}
und hier ein ausschnitt aus der tcp_ip klasse mit dem eventhandler
private string letzte_daten = "";
public string str
{
set
{
letzte_daten = value;
daten_eventargs e = new daten_eventargs(value);
Empfange_Daten(this, e);
}
get
{
return letzte_daten;
}
}
public delegate void Daten_Event(object sender, daten_eventargs e);
public event Daten_Event Empfange_Daten;