2011-01-26 17 views
5

Ho un'applicazione madre di Windows Form e un comando child lineline.exe. Utilizzando un esempio MSDN modificato per pipe anonime (h ttp://msdn.microsoft.com/en-us/library/bb546102.aspx), sono in grado di inviare un oggetto serializzato dal genitore al figlio. Il bambino può deserializzare l'oggetto e leggere i valori..net C# Tubi anonimi: incompresi?

Forse ho frainteso la meccanica della pipa anonima, tuttavia mi aspetto che la pipa rimanga aperta finché non la richiudo, in modo che io possa inviare un altro oggetto attraverso quando mi piace, comunque dopo che l'oggetto è stato inviato/ricevuto la pipe non è più connessa (determinata dalla proprietà IsConnected).

Al momento, una volta che un oggetto viene inviato da padre a figlio, la pipe viene chiusa (non da "me"). Mantengo localmente un riferimento al pipeHandle originale ma non riesco a riaprire la pipa. Dovrei essere in grado o non dovrebbe aver chiuso in primo luogo? Non vedo come potrei aprire un altro nuovo pipe, poiché non posso passare l'handle dal padre al client (il pipehandle iniziale è stato passato da args in primo grado)

Come invio un altro oggetto dal genitore al bambino?

Mi rendo conto che posso utilizzare Named-Pipes, ma MSDN consiglia pipe anonime per IPC sullo stesso computer locale.

Molte grazie

Arnie

+1

Inserisci il tuo codice. –

risposta

7

Se stai facendo come nel campione di MSDN si sta chiudendo lo StreamWriter (con l'istruzione using), e closing a StreamWriter chiude il flusso sottostante. Il tubo rimane aperto finché lo stream rimane aperto, quindi se non si desidera chiuderlo, non chiudere lo stream né lo StreamWriter.