3

私はC#が初めてなので、簡単にやってください!

これまでのところ、クライアント接続をリッスンし、それに応じてクライアントに応答するコンソール アプリがあります。

ボタンとテキスト ボックスを含む WPF フォームもあります。このボタンは、BackgroundWorker としてサーバーに接続するコードを起動し、応答を待ってからテキスト ボックスの末尾に追加します。

これは一度うまくいきます。時には2回。しかし、その後もクラッシュし続けました。つまり、DoWork ブロックがまったく呼び出されておらず、RunWorkerCompleted に直行していたことがわかりました。もちろん、.result は空白なので、文字列に変換しようとすると失敗します。

これは初歩的なミスですか?私はインターネットで上記の言い方をいろいろと検索してみましたが、役に立つものは見つかりませんでした...

これはこれまでのコードです: http://pastebin.com/ZQvCFqxN - 何がうまくいかなかったのかを正確に把握しようとする私からの非常に多くのデバッグ出力があります。

これはデバッグ出力の結果です: http://pastebin.com/V412mppX

どんな助けでも大歓迎です。ありがとう!

編集: 関連するコードの修正後(以下の Patrick Quirk に感謝) は次のとおりです。

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);
}
4

1 に答える 1