2

非常にうまく機能するコードをいくつか書きました。プログラムはサーバーとの非同期ソケットを開き、サーバーが送信するものは何でもテキストエリアに書き込みます。

問題は、フォームを閉じると、多くのエラーが発生することです。これは、コールバックが、明らかにもう存在しないテキストエリアに書き込もうとしているためです。

textarea に書き込むメソッドは次のとおりです。

private void appendText(string s)
{
    if (InvokeRequired)
    {
        this.Invoke(new Action<string>(appendText), new object[] { s });
        return;
    }

    SocketStream.AppendText(s + "\r\n");
}

上記のメソッドを呼び出すコールバックのコードの一部を次に示します。

string[] arr = txt.Split(new char[1]);

foreach (string t in arr)
{
    if (!String.IsNullOrEmpty(t) && !String.IsNullOrWhiteSpace(t))
    {
        appendText( t);
    }  
}

これらのエラーの発生を防ぐ方法はありますか? 私はすでに追加しようとしました

if(SocketStream != null)

しかし、うまくいかなかったようです。

4

2 に答える 2