В этой теме уже есть несколько довольно хороших тем о переполнении стека, но на самом деле, кажется, нет однозначного ответа ни на одну из них. Мое консольное приложение C # (работающее как служба Windows) запускает процесс Java и управляет им (запускает / останавливает / перезапускает), но моя проблема в том, что я удаленно подключаюсь к компьютерам и вижу, что иногда он запускает около 20 процессов Java.
Это, очевидно, проблема, связанная с тем, что мое приложение в какой-то момент перестало работать, а не закрывало запущенный Java-процесс. Я подключил «UnhandledExceptionEventHandler» в AppDomain.CurrentDomain, и я вызываю TerminateProcess () из него (закрывает активный процесс Java), но эта проблема все еще возникает в отдельных случаях.
Мое приложение имеет основной поток, серверный поток TCP (который принимает асинхронные подключения) и серверный поток UDP. Есть ли еще что-то, что я должен подключить поверх UnhandledException?
EDIT
Мне также пришло в голову, что в моем коде есть несколько блоков Try / Catch, которые просто пишут в консоль, чего я никогда не вижу. Должен ли я просто удалить их, чтобы они попадали в исключение UnhandledException, или вместо этого добавить туда регистратор?