Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Child process in c#
martedì 20 dicembre 2005 - 19.58
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
litograph
Profilo
| Newbie
3
messaggi | Data Invio:
mar 20 dic 2005 - 19:58
Dear all,
sono nuovo in questo forum e spero che qualcuno possa essermi di aiuto su questa mia problematica.
Ho sviluppato un servizio di windows in C# e vorrei creare da questo dei chil process (aventi spazio di memoria separato dal parent process) su una libreria che ora per semplicità chiamo pippo.dll.
Voglio premettere che ho già provato a creare degli AppDomain secondari ma questo non va bene perché il codice della libreria viene copiato nella stessa area di memoria del parent process.
Inoltre non va bene nemmeno usare la classe 'Process' poiché, anche se questa mi crea un vero child process, quest'ultimo viene chiuso se faccio il logoff dell'utente connesso al pc dove risiede il servizio parent process. Insomma questo child process deve essere ancorato al servizio parent process e deve terminare solo se termina il parent process oppure esce lo stesso child process perchè ha terminato la sua esecuzione.
Premetto che il funzionamento che cerco in C# è tipo il CreateProcess() di C++ o il fork() di Unix.
Grazie 1K.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 21 dic 2005 - 12:39
>Dear all,
>sono nuovo in questo forum e spero che qualcuno possa essermi
>di aiuto su questa mia problematica.
Ciao e Benvenuto.
>Ho sviluppato un servizio di windows in C# e vorrei creare da
>questo dei chil process (aventi spazio di memoria separato dal
>parent process) su una libreria che ora per semplicità chiamo
>pippo.dll.
>Voglio premettere che ho già provato a creare degli AppDomain
>secondari ma questo non va bene perché il codice della libreria
>Inoltre non va bene nemmeno usare la classe 'Process' poiché,
>anche se questa mi crea un vero child process, quest'ultimo
>viene chiuso se faccio il logoff dell'utente connesso al pc
>dove risiede il servizio parent process. Insomma questo child
>process deve essere ancorato al servizio parent process e deve
>terminare solo se termina il parent process oppure esce lo stesso
>child process perchè ha terminato la sua esecuzione.
>Premetto che il funzionamento che cerco in C# è tipo il CreateProcess()
> di C++ o il fork() di Unix.
E' un bel quesito il tuo. Da quello che ho capito vorresti avere un servizio Windows e n processi Esterni creati dal processo del servizio che rimangano in piedi con il servizio anche al logoff dell'utente.
Una specie di creazione di processi out-of-process ?
Diciamo che non mi sono mai cimentato in un'implementazione di questo tipo ma non sono neanche così sicuro che si possa fare. Tu sei sicuro che creando dei processi esterni cosi questi rimangano in piedi al logoff ? Il servizio Windows sicuramente, ma sugli altri dubito.
Se sei sicuro un'opportunità è usare nativamente la CreateProcess tramite interoperabilità.
Ma prima di abbracciare questa strada mi documenterei.
Tu che ne pensi ?
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
litograph
Profilo
| Newbie
3
messaggi | Data Invio:
mer 21 dic 2005 - 15:43
Ciao, e grazie per la risposta...
ho già usato l'interoperabilità con una classe c++ che effettua il CreateProcess e crea una pipe line con il processo creato, e mi funziona nel modo come ho detto nell'header message, ma questo mi comporta un calo delle performance del sistema che sto realizzando dal momento che esso apre e chiude un numero elevato di processi in 1 sec (~300). E' per questo che facevo richiesta di una possibile implementazione tutta in C# che già ottimizzasse questi meccanismi.
Comunque grazie.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 23 dic 2005 - 16:24
>Ciao, e grazie per la risposta...
>ho già usato l'interoperabilità con una classe c++ che effettua
>il CreateProcess e crea una pipe line con il processo creato,
>e mi funziona nel modo come ho detto nell'header message, ma
>questo mi comporta un calo delle performance del sistema che
>sto realizzando dal momento che esso apre e chiude un numero
>elevato di processi in 1 sec (~300). E' per questo che facevo
>richiesta di una possibile implementazione tutta in C# che già
> ottimizzasse questi meccanismi.
>Comunque grazie.
Non credo proprio che C# ottimizzi una cosa di questo tipo, se mi parli di creazione e distruzione di processi esterni nell'ordine di 300 al secondo è meglio utilizzare C++ e lasciare perdere il C#.
Di fatto però altro non so aggiungere considerato che bisognerebbe consultare meglio la documentazione relativa allo sviluppo di servizi Windows più evoluti che abbiano questa necessità.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
litograph
Profilo
| Newbie
3
messaggi | Data Invio:
ven 23 dic 2005 - 18:22
Ok,
grazie lo stesso David.
Dimenticavo.... Buone feste.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !