C #: String als Parameter zum Event?
Ich habe einen GUI-Thread für mein Formular und einen anderen Thread, der die Dinge berechnet.
Das Formular hat eine richtTextBox. Ich möchte, dass der Worker-Thread Zeichenfolgen an das Formular übergibt, damit jede Zeichenfolge im Textfeld angezeigt wird.
Jedes Mal, wenn eine neue Zeichenfolge im Arbeitsthread generiert wird, rufe ich ein Ereignis auf, und dies sollte nun die Zeichenfolge anzeigen. Aber ich weiß nicht, wie ich die Saite übergeben soll! Das habe ich bisher versucht:
///// Form1
private void btn_myClass_Click(object sender, EventArgs e)
{
myClass myObj = new myClass();
myObj.NewListEntry += myObj_NewListEntry;
Thread thrmyClass = new Thread(new ThreadStart(myObj.ThreadMethod));
thrmyClass.Start();
}
private void myObj_NewListEntry(Object objSender, EventArgs e)
{
this.BeginInvoke((MethodInvoker)delegate
{
// Here I want to add my string from the worker-thread to the textbox!
richTextBox1.Text += "TEXT"; // I want: richTextBox1.Text += myStringFromWorkerThread;
});
}
///// myClass (working thread...)
class myClass
{
public event EventHandler NewListEntry;
public void ThreadMethod()
{
DoSomething();
}
protected virtual void OnNewListEntry(EventArgs e)
{
EventHandler newListEntry = NewListEntry;
if (newListEntry != null)
{
newListEntry(this, e);
}
}
private void DoSomething()
{
///// Do some things and generate strings, such as "test"...
string test = "test";
// Here I want to pass the "test"-string! But how to do that??
OnNewListEntry(EventArgs.Empty); // I want: OnNewListEntry(test);
}
}