Hinweis: Teil einer Serie: C#: Accessing form members from another class und How to access form objects from another cs file in C#. HalloZugreifen auf Klassenmitglieder mit Invoke von einem anderen Thread in C#
,
Die Idee ist, den Benutzer unter Verwendung des Memos zu benachrichtigen, wenn ein Paket in einem TCP-Client empfangen/gesendet.
Nach einigen Korrekturen, die am besten geeignete Lösung schien dies ein
public string TextValue
{
set
{
this.Memo.Text += value + "\n";
}
}
zu sein, das ist, wie es
var form = Form.ActiveForm as Form1;
if(form != null)
form.TextValue = "Test asdasd";
jedoch der Code eine Ausnahme auslöst Aufruf genannt wird, wegen Unsafe Faden call.Ich fand eine Lösung bei msdn, aber ich kann nicht scheinen, die Methode, die sie dort verwendet haben, zu erwerben.
Das ist mein Remake, das nicht funktioniert.
private void SetTextMemo(string txt)
{
if(this.Memo.InvokeRequired)
{
this.Invoke(SetTextMemo,txt); //error here
}
else
{
this.Memo.Text += txt + "\n";
}
}
Fehler:
Argument '1': kann nicht von "Methode Gruppe zu
Argument 'System.Delegate' umwandeln '2': kann von 'string' to‚Objekt nicht konvertieren [ ]
Grundsätzlich versuche ich auf das Memo zuzugreifen (oder eher gesagt, Text zum Memo hinzufügen) von einem anderen Thread mit Invoke.Ich habe es nie zuvor verwendet, vielleicht deshalb missverstanden ich meinen Fehler.
Wie wäre es mit einem Ereignis? – bytebender