MenDel
Если не считать первой причины,
я использую другой поток,
каюсь, не обратил внимание на то, что вызов из дополнительного потока.
MenDel
я не вывожу ошибку в лог,
хммм... довольно опрометчиво.
MenDel
и ты ведь тоже запускаешь повторно метод из catch, я немного не понимаю про рекурсию и GC
у меня ограниченное количество запусков и большие паузы.
GC не отслеживает переменные метода, пока он не завершён, вроде.
Но в любом случае при глубокой рекурсии будет переполнение стека на одну только адресацию, а отжирание памяти на сериализацию исключений - это будет бонус :)
Не забывай, что в каждом исключении будет нарастающая вложенность.
MenDel
Может проще прописать в LoggingHelper.SyncMarketTime(5000); 5000 или другое кол-во милисекунд?
на сколько я понимаю, это таймаут, а не пауза
MenDel
и тогда не придется усыплять поток и осчитывать итерации и тем более что он сам задает NowOffset.
Или я что то недопонимаю.
Ставить дополнительный поток на паузу - вещь не накладная. Главное, чтобы слишком много потоков не занимать, но с пулом это вроде тоже не большая проблема.
В принципе конечно можно всё в одном дополнительном потоке делать. Просто лень было лишний метод писать :)
Идея была в том, что первая попытка выполняется синхронно, а дальше уже в фоне.
Кстати методика себя оправдала.
Запустил - писало, что ошибка синхронизации. Оставил, пошёл ужинать. Через 2 часа обнаружил, что практически все 2 часа синхронизация не срабатывала и сработала только попытки с 18-й (у меня их всего - 21 была).