чумной глюк с .NET System.Diagnostics.Process.Start()
указанный обработчик вынести в отдельный проекта если в отдельный процесс? основная прога — сервис?
Вот это (разрешить взаимодействие с десктопом): http://channel9.msdn.com/forums/TechOff/255690-Allow-service... пробовали?
если этот код перенести в пустой проект, то проблема наблюдается?
и запускает - не сервисы
если этот код перенести в пустой проект, то проблема не наблюдается
я вообще не понимаю, отчего идет такая интерференция, в частности в случае
Причем, в тестах, пробовали запускать прогу, которая сначала пишет какой-нибудь msgbox, а только потом создает свое основное окно - в результате основная прога падает именно по созданию окна. То есть, когда юзер нажал OK на msgbox-е
Объект p (типа Process) как-нибудь потом используется?
На Application.Run
> Объект p (типа Process) как-нибудь потом используется?
нет, вообще никак
1. что будет если UseShellExecute = true
2. основная прога - не веб-сервером выполняется? по идее, если основной проге запрещено создавать окна, то и порожденные процессы не имеют такого права (правда, MessageBox не вписывается)
все оказалось туманнее. Запуск программы = идет вызов CreateProcess. В .net-е жестко вшито, что в параметрах обертки CreateProcess (т.е. System.Diagnostics.Process) вызывается с флагом duplicatehandles = true. Пришлось переписать обертку, чтобы было false
Оставить комментарий
NataNata
ситуацияесть "основная" прога под .net, которая умеет запускать внешние приложение по требованию юзера
делает она это так (код не мой, поэтому на vb.net, что не суть важно):
[Обработчик нажатия кнопки, все в основном потоке, все круто]
Dim si As New System.Diagnostics.ProcessStartInfo
si.EnvironmentVariables.Add("XXX", YYY)
si.FileName = itemtag.Path
si.UseShellExecute = False
Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(si)
[конец обработчика]
в результате, если таким образом из основной проги запустить консольное приложение (cmd или far то все ок
если же запустить таковым образом прогу, которая создает ОКНО (например, notepad то основная (!) прога падает с access violation (!). Причем, в тестах, пробовали запускать прогу, которая сначала пишет какой-нибудь msgbox, а только потом создает свое основное окно - в результате основная прога падает именно по созданию окна.
Кроме того, если указанный обработчик вынести в отдельный проект, то падений не наблюдается
система xp 32
в каком направлении вообще можно копать? я в полном замешательстве, прямо таки х@#ня какая-то... все усугубляется тем, что глюк этот живет на компах, которые стоят в америке и к которым я ни удаленно не могу подключиться, ни тем более winice-ом порыться на худой конец