We may experience some slight turbulence, and then explode.
Здравствуйте. Впервые пишу службу, нужен совет по поводу передачи в нее параметров при старте. Параметров довольно много: полные имена нескольких файлов, строка связывания с АД, названия групп... Можно ли как-то прицепить к службе оконный интерфейс для ввода этих параметров?

Upd.: новая проблема... точнее две. Изначально было написано и отлажено приложение, теперь приходится переносить код в службу.
Происходить должно следующее: в OnStart() запускается backgroundWorker, внутри которого сервер ожидает запросов на подключение от клиентов. Для клиентов написан отдельный класс, создается экземпляр этого класса, там же через метод класса отправляются первые команды клиенту, затем - запускается отдельный поток для этого клиента и дальше прослушивание осуществляется уже в этом потоке. В приложении все работает, в службе - работает код в backgroundWorker'е, но как будто совсем не запускается поток клиента. Ошибок не выдает. Есть какие-то особенности при работе с потоками в службах?
Собственно, при попытке выявить конкретную ошибку возникает вторая проблема: не могу дебажить. Попытка Attach to process выдает: "The following module was built either with optimizations enabled or without debug information: <адрес exe-шника службы> To debug this module, change it's project build configuration to Debug mode." Гугл перелопачен, все предложенные решения опробованы - ноль.

Upd2.: проблемы решены) в Configuration Manager проверить, что в столбце Configuration для всех проектов стоит Debug, а в Build проставлены все галочки.

@темы: Windows, Вопрос, C#

Комментарии
06.05.2010 в 10:42

Я знаю, что я гений, но мне от этого ничуть не легче.
Добрый день.
Оконный интерфейс не должен использоваться в службе, иначе Вы напишете приложение. Да, окна доступны, но надо всячески избегать из использования.
Передать параметры можно либо через параметры запуска (которые задаются в окне настройки запуска сервиса), либо через конфигурационный файл. Параметры запуска по-умолчанию можно задать при регистрации сервиса.
06.05.2010 в 11:21

We may experience some slight turbulence, and then explode.
Конфигурационный файл звучит неплохо, спасибо)
12.05.2010 в 13:06

Those wings... I want them too.
Upd.-2: Попробуйте положить соответствующий *.pdb рядом с exe-шником, может поможет.
Про первое ничего не знаю, но мне казалось, что BackgroundWorker при работе с пользовательским интерфейсом используется, а в службе он ни к чему. Вроде в .Net много средств работы с потоками, почему вам понадобился именно он?
12.05.2010 в 13:15

We may experience some slight turbulence, and then explode.
Попробуйте положить соответствующий *.pdb рядом с exe-шником, может поможет.
Попробую немного позже) Посоветовали попробовать установить сервиспак, до сих пор устанавливается...

Вроде в .Net много средств работы с потоками, почему вам понадобился именно он?
На самом деле просто потому, что это было удобно, когда это было приложение, и в службе он тоже заработал, так что не было смысла менять...

Запустили на работе - потоки клиентов заработали нормально, теперь попытаюсь воссоздать те условия -_-
12.05.2010 в 15:36

Those wings... I want them too.
Upd2.: проблемы решены) обе сразу одной галочкой глубоко в настройках %)
Ну вы бы хоть написали, какой галочкой - вдруг кто-то с подобными проблемами столкнётся...
12.05.2010 в 15:55

We may experience some slight turbulence, and then explode.
https
Просто это похоже на мою ошибку еще при создании проекта установки. А решение - фактически то, которое все предлагают первым делом.

На самом деле большинство решений этой проблемы сводятся к "проверьте, что везде установлено Configuration: Debug". Теперь уже вижу, что нужно было просто зайти в Configuration Manager - до которого я добиралась окольными путями, когда полезла проверять проекты, - и проверить, что в столбце Configuration у всех проектов стоит Debug, а в столбце Build проставлены галочки.