Иногда я получаю AccessViolationException при вызове ReadToEnd () в потоке ответов WebRequest.
Я создаю фоновый поток для этой операции, публикую результаты обратно в поток пользовательского интерфейса и позволяю потоку выйти самостоятельно. Мое приложение делает это примерно раз в минуту. Кажется, он работает в течение нескольких часов, а затем случайно падает.
Может кто-нибудь помочь мне понять, почему это происходит?
Большое спасибо!
Код
String uri = ... ;
String data;
WebRequest request = WebRequest.Create(uri);
request.Timeout = (int) TimeSpan.FromSeconds(30).TotalMilliseconds;
using (Stream stream = request.GetResponse().GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
data = reader.ReadToEnd(); // <-- exception...sometimes...
Исключение
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr socketHandle, Byte* pinnedBuffer, Int32 len, SocketFlags socketFlags)
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, SocketError& errorCode)
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.IO.StreamReader.ReadBuffer()
at System.IO.StreamReader.ReadToEnd()
at // my code here