是否有任何方法可以編寫一個將數據重複寫入文件的異步函數。異步寫入文件
我收到以下錯誤,當我寫異步函數
該進程無法訪問文件:因爲它正在被另一個進程使用
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();
}
}
是的,這是可能的。確保您不要在主線程中打開文件,也不要使用其他文件進行修改。 – Leri 2012-08-02 09:41:48
我應該在哪裏修改代碼 – 2012-08-02 09:49:00
如果您打開一個流,通常會發生異常。在給定的代碼示例中,您只寫入現有的流,但是創建流的代碼(以及拋出的異常)缺失。 – Oliver 2012-08-02 09:49:40