rendered paste bodypublic bool StartAsync()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(server.hostpath);
finished = new ManualResetEvent(false);
writeEvent = new AutoResetEvent(true);
OutFile = new FileStream(String.Format("{0}{1}", file.savepath, file.partname), FileMode.Create);
buffer = new byte[1024];
request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);
finished.WaitOne();
OutFile.Close();
return true;
}
private void ResponseCallback(IAsyncResult ar)
{
WebRequest request = (WebRequest)ar.AsyncState;
WebResponse response = request.EndGetResponse(ar);
Stream strm = response.GetResponseStream();
strm.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(ReadCallBack), strm);
}
private void ReadCallBack(IAsyncResult ar)
{
Stream strm = (Stream)ar.AsyncState;
int count = strm.EndRead(ar);
if (count > 0)
{
OutFile.BeginWrite(buffer, 0, count, new AsyncCallback(WriteCallBack), OutFile);
strm.BeginRead(buffer, 0, buffer.Length, new AsyncCallback(ReadCallBack), strm);
}
else
{
strm.Close();
finished.Set();
}
}
private void WriteCallBack(IAsyncResult ar)
{
writeEvent.WaitOne();
FileStream fs = (FileStream)ar.AsyncState;
fs.EndWrite(ar);
writeEvent.Set();
}