Ваш код работает, как и ожидалось для меня. Когда вы вызываете Abort () для ожидающего запроса, ваш ReadCallback должен сработать. Затем, когда вы вызываете EndGetResponse (), вы должны получить исключение WebException с Status = RequestCanceled.
Попробуйте этот слегка измененный код, чтобы увидеть это в действии:
private void ReadCallback(IAsyncResult asynchronousResult)
{
_stopTimer = true;
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
try
{
var m_response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
System.Diagnostics.Debug.WriteLine("Success");
}
catch (WebException exc)
{
System.Diagnostics.Debug.WriteLine(exc.Status);
}
}
Смотрите также на MSDN:
http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.abort(v=VS.95).aspx
" Метод Abort отменяет запрос к ресурсу. После отмены запроса вызов метода BeginGetResponse, EndGetResponse, BeginGetRequestStream или EndGetRequestStream вызывает WebException со свойством Status, для которого установлено значение RequestCanceled. "