1

以下の BaseStream.Seek のコードでは、実行時エラー NullReferenceException was unhandled by user code が発生しています。オブジェクト参照がオブジェクトのインスタンスに設定されていません。

どうすればこれを解決できますか?

public void GoButton_Click(object sender, System.EventArgs e)
{
    IAsyncResult ar = DoSomethingAsync(strURL, strInput);
    Session["result"] = ar;
    Response.Redirect("wait1.aspx");
}

private IAsyncResult DoSomethingAsync(string strURL, string strInput)
{
    DoSomethingDelegate doSomethingDelegate = new DoSomethingDelegate(DoSomething);
    IAsyncResult ar = doSomethingDelegate.BeginInvoke(strURL, strInput, new AsyncCallback(MyCallback), null);
    return ar;
}

private delegate void DoSomethingDelegate(string strURL, string strInput);

private void MyCallback(IAsyncResult ar)
{
    AsyncResult aResult = (AsyncResult)ar;
    DoSomethingDelegate doSomethingDelegate = (DoSomethingDelegate)aResult.AsyncDelegate;
    doSomethingDelegate.EndInvoke(ar);
}

private void DoSomething(string strURL, string strInput)
{
    int i = 0;
    for (i = 0; i < 1000; i++)
    {
        m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
        m_streamWriter.WriteLine("{0} ", MethodCall(strURL, strInput));
        m_streamWriter.Flush();
        m_streamWriter.Close();
    }
}
4

3 に答える 3

1
for (i = 0; i < 1000; i++) 
    { 
        m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); 
        m_streamWriter.WriteLine("{0} ", MethodCall(strURL, strInput)); 
    } 
    m_streamWriter.Flush(); 
    m_streamWriter.Close(); 

m_streamWriter.Close をループの外に移動してみてください。

于 2012-08-02T12:15:22.287 に答える
1

ストリームを閉じてから、 for ループの次の反復で Seek() を呼び出そうとしています - これは、例外のソースとして適切な候補に見えます

于 2012-08-02T11:40:46.817 に答える
0

閉じたストリームに接続しようとしSeekています。WriteLine

編集: ああ、イアンの方が速かった。

于 2012-08-02T12:08:50.540 に答える