2014-01-31 4 views
3

У меня есть приложение, которое работает в скрытом режиме. В новой версии мне нужно обновить базу данных, поэтому мне нужно показать некоторую форму, чтобы получить некоторые данные от пользователя для обновления. Я использую метод Form.ShowDialog, но произошли ошибки. Говорят, по ошибке, чтоForm.ShowDialog в скрытом приложении

«Отображение модального диалогового окна или форме, когда приложение не работает в режиме UserInteractive не является законной операция. Укажите ServiceNotification или стиль DefaultDesktopOnly для отображения уведомления от сервисное приложение ".

Я думаю, что мне нужно показать форму другим способом, но я не знаю, как это сделать.

Он работает нормально, когда я запускаю это, я думаю, я должен назвать его сервером вручную. Но когда другой сервис начинает его код:

System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(path); 
    startInfo.WorkingDirectory = ServerModel.ServerInfo.ServerDir; 
    startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
    System.Diagnostics.Process.Start(startInfo); 

Эта ошибка возникает.

+0

Ваш код вызывает или пытается показать диалог где-нибудь (средний уровень, сервер, веб-сервис, служба Windows и т. Д.), Где он не может отобразить это диалоговое окно или, вероятно, не знает, что такое Windows Forms. – skolte

+0

Я редактирую свой вопрос, чтобы уточнить. – aleshko

+1

Что ** точно ** вы подразумеваете под «скрытым режимом»? –

ответ

1

В сообщении об ошибке указано, что вы должны установить параметры MessageBox.Show либо ServiceNotification, либо DefaultDesktopOnly. Это относится к MessageBox, который вы, вероятно, пытаетесь показать в своем приложении.

+0

Я пытаюсь отобразить не окно сообщений, а мою определенную winform. – aleshko

+0

Но я думаю, вы пытаетесь показать MessageBox внутри. Это ошибка, которую вы получаете. Но, вероятно, как сказал другой ответ, вы хотите переосмыслить свой дизайн приложения. –

+0

Удачи в поиске решения? –

2

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

См. this link для справки.

+0

Если 'ShowDialog()' терпит неудачу, то будут отображаться на баллоне –

+0

Под «скрытым» вы подразумеваете «сведено к минимуму до лотка». «Скрытое» приложение работает как приложение Windows Service. – Groo

Смежные вопросы