Ответ 1
1) Это может быть, если не прямо, так косвенно, делая приложение медленнее и заставляя его использовать больше памяти.
2) Когда он запускается в режиме отладки, есть определенные вещи, которые работают по-другому, например:
-
Код скомпилирован с некоторыми дополнительными инструкциями NOP, так что в начале каждой строки кода есть хотя бы одна команда, чтобы можно было разместить точку прерывания в любой строке.
-
Инструкции могут быть переупорядочены в режиме деблокирования, но не в режиме отладки, так что код может быть одноэтапным, а результат будет соответствовать точному порядку исходного кода.
-
Сборщик мусора работает по-разному, позволяя ссылки выживать во всей их области действия, а не только в то время, когда они используются, так что переменные можно просматривать в режиме отладки без ухода до окончания области.
-
Исключения содержат больше информации и требуют много времени для обработки при броске.
Все эти различия относительно малы, но они являются фактическими различиями, и они могут иметь значение в некоторых случаях.
Если вы видите большую разницу в производительности между режимами отладки и режима выпуска, обычно это происходит потому, что с кодом что-то не так, как, например, если он бросает и захватывает огромное количество исключений. Если в коде есть условие гонки, это может произойти только в режиме деблокирования, потому что в режиме отладки есть дополнительные накладные расходы, которые заставляют код работать медленнее.
3) Что касается проблемы с вашей службой, я не знаю, но, похоже, она не связана с тем, как выполняется код в режиме отладки или режиме выпуска. Код запускался бы в любом случае, и если бы это было проблемой с кодом, оно бы разбилось, и вы могли бы увидеть его в журнале событий.