помогите с необработанным исключением
От: nemoys  
Дата: 08.11.10 07:42
Оценка:
привет
многопоточное приложение — использует сокеты, ассинхронные методы , ThreadPool
работает на никсах последня версия mono
иногда выскакивает вот такой error

FATAL "Operation is not valid due to the current state of the object":^
at System.Collections.Queue.Dequeue () [0x00000] in <filename unknown>:0
at System.Net.Sockets.Socket+SocketAsyncResult.Complete () [0x00000] in <filename unknown>:0
at System.Net.Sockets.Socket+SocketAsyncResult.CompleteDisposed (System.Object unused) [0x00000] in <filename unknown>:0

вопрос — как заставить приложение работать после возникновения такой ошибки — у меня сразу падает вся программа несмотря на то что ошибка не в главном потоке
Re: помогите с необработанным исключением
От: _FRED_ Черногория
Дата: 08.11.10 07:51
Оценка:
Здравствуйте, nemoys, Вы писали:

N>многопоточное приложение — использует сокеты, ассинхронные методы , ThreadPool

N>работает на никсах последня версия mono
N>иногда выскакивает вот такой error

N> FATAL "Operation is not valid due to the current state of the object":^

N> at System.Collections.Queue.Dequeue () [0x00000] in <filename unknown>:0
N> at System.Net.Sockets.Socket+SocketAsyncResult.Complete () [0x00000] in <filename unknown>:0
N> at System.Net.Sockets.Socket+SocketAsyncResult.CompleteDisposed (System.Object unused) [0x00000] in <filename unknown>:0

N>вопрос — как заставить приложение работать после возникновения такой ошибки


А есть ли смысл продолжать работать? Что мешает исправить ошибку? Синхронизации при использовании System.Collections.Queue используете?

N> — у меня сразу падает вся программа несмотря на то что ошибка не в главном потоке


А почему не должна падать
Help will always be given at Hogwarts to those who ask for it.
Re[2]: помогите с необработанным исключением
От: nemoys  
Дата: 08.11.10 09:41
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, nemoys, Вы писали:


N>>многопоточное приложение — использует сокеты, ассинхронные методы , ThreadPool

N>>работает на никсах последня версия mono
N>>иногда выскакивает вот такой error

N>> FATAL "Operation is not valid due to the current state of the object":^

N>> at System.Collections.Queue.Dequeue () [0x00000] in <filename unknown>:0
N>> at System.Net.Sockets.Socket+SocketAsyncResult.Complete () [0x00000] in <filename unknown>:0
N>> at System.Net.Sockets.Socket+SocketAsyncResult.CompleteDisposed (System.Object unused) [0x00000] in <filename unknown>:0

N>>вопрос — как заставить приложение работать после возникновения такой ошибки


_FR>А есть ли смысл продолжать работать? Что мешает исправить ошибку? Синхронизации при использовании System.Collections.Queue используете?


N>> — у меня сразу падает вся программа несмотря на то что ошибка не в главном потоке


_FR>А почему не должна падать



Да — смысл продолжать работать есть. потоков много и падение одного мне не мешает
тем более если я получаю извещение о падении.
Насчет исправления ошибки — ошибка появляется очень редко и я никак не могу ее отловить — примерно раз в день при непрерывной работе — и форсировать немогу потому что не могу понимаю причину ее возникновения
вот отловил ее в необработанных и думаю что дальше делать — самое простое просто убивать поток и продолжать работать как ни в чем не бывало но немогу — прога падает.
System.Collections.Queue использую не я я класс сокетов
at System.Net.Sockets.Socket+SocketAsyncResult.Complete()
внутренний класс в System.Net.Sockets.Socket.
Re[3]: помогите с необработанным исключением
От: _FRED_ Черногория
Дата: 08.11.10 09:50
Оценка:
Здравствуйте, nemoys, Вы писали:

N>>>вопрос — как заставить приложение работать после возникновения такой ошибки

_FR>>А есть ли смысл продолжать работать? Что мешает исправить ошибку? Синхронизации при использовании System.Collections.Queue используете?

N>>> — у меня сразу падает вся программа несмотря на то что ошибка не в главном потоке

_FR>>А почему не должна падать

N>Да — смысл продолжать работать есть. потоков много и падение одного мне не мешает


Откуда вы знаете, что не мешает? Вы используете некий объект (очередь) из разных потоков и так уж вышло, что объект у вас оказался в несогласованном состоянии. Откуда у вас гарантии, что можно продолжать работать с этим объектом?

N>тем более если я получаю извещение о падении.


Что за "извещение о падении" вы получаете или хотели бы получить

N>Насчет исправления ошибки — ошибка появляется очень редко и я никак не могу ее отловить — примерно раз в день при непрерывной работе — и форсировать немогу потому что не могу понимаю причину ее возникновения


Значит, нужно курить синхронизацию, мидитировать. По другому никак.

N>вот отловил ее в необработанных и думаю что дальше делать — самое простое просто убивать поток и продолжать работать как ни в чем не бывало но немогу — прога падает.


Проблема не с потоком, в котором произошла ошибка, а с тем, что повреждены, находятся в не согласованном состоянии некие данные. И "убийство" потока ничего не сможет исправить.

N>System.Collections.Queue использую не я я класс сокетов

N> at System.Net.Sockets.Socket+SocketAsyncResult.Complete()
N>внутренний класс в System.Net.Sockets.Socket.

Значит, нужно курить стек вызовов, разбираться, что может привести к ошибке — быть может и во фреймворке баг.
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.