public override void Abort ()
{
if (Interlocked.CompareExchange (ref aborted, 1, 0) == 1)
return;
if (haveResponse && finished_reading)
return;
haveResponse = true;
if (abortHandler != null) {
try {
abortHandler (this, EventArgs.Empty);
} catch (Exception) {}
abortHandler = null;
}
if (asyncWrite != null) {
WebAsyncResult r = asyncWrite;
if (!r.IsCompleted) {
try {
WebException wexc = new WebException ("Aborted.", WebExceptionStatus.RequestCanceled);
r.SetCompleted (false, wexc);
r.DoCallback ();
} catch {}
}
asyncWrite = null;
}
if (asyncRead != null) {
WebAsyncResult r = asyncRead;
if (!r.IsCompleted) {
try {
WebException wexc = new WebException ("Aborted.", WebExceptionStatus.RequestCanceled);
r.SetCompleted (false, wexc);
r.DoCallback ();
} catch {}
}
asyncRead = null;
}
if (writeStream != null) {
try {
writeStream.Close ();
writeStream = null;
} catch {}
}
if (webResponse != null) {
try {
webResponse.Close ();
webResponse = null;
} catch {}
}
}