Ich bin neu mit C#, also sei bitte nachsichtig mit mir!
Bisher habe ich eine Konsolenanwendung, die auf Clientverbindungen hört und entsprechend antwortet.
Ich habe auch ein WPF-Formular mit einer Schaltfläche und einem Textfeld. Die Schaltfläche startet einige Code, um sich als BackgroundWorker mit dem Server zu verbinden, der dann auf eine Antwort wartet, bevor er sie am Ende des Textfeldes anhängt.
Das funktioniert super, einmal. Manchmal auch zweimal. Aber dann hat es angefangen abzustürzen - es stellte sich heraus, dass der DoWork-Block überhaupt nicht aufgerufen wurde und er direkt zu RunWorkerCompleted ging. Natürlich ist das .result leer, also schlägt der Versuch, es in einen String umzuwandeln, fehl.
Ist das ein Anfängerfehler? Ich habe versucht, im Internet nach verschiedenen Möglichkeiten zu suchen, das oben Gesagte auszudrücken, bin aber auf nichts Nützliches gestoßen...
Das ist der Code bisher: http://pastebin.com/ZQvCFqxN - es gibt so viele Debug-Ausgaben von mir, während ich versucht habe herauszufinden, was genau schief gelaufen ist.
Dies ist das Ergebnis der Debug-Ausgaben: http://pastebin.com/V412mppX
Jede Hilfe ist sehr willkommen. Vielen Dank!
BEARBEITEN: Der relevante Code nach der Korrektur (danke an Patrick Quirk unten) ist:
public void dorequest(string query)
{
request = new BackgroundWorker();
request.WorkerSupportsCancellation = true;
request.WorkerReportsProgress = true;
request.ProgressChanged += request_ProgressChanged;
request.DoWork += request_DoWork;
request.RunWorkerCompleted += request_RunWorkerCompleted;
request.RunWorkerAsync(query);
}