C'è certo numero di buone opzioni:
- Message Queue
- Named Pipes (direttamente)
- File mappati memoria
- WCF su Nome Pipes o MSMQ
Uno di questi è più che abbastanza veloce, quindi suggerirei più facile da implementare.
La coda messaggi (MSMQ) secondo me è la più semplice da utilizzare, fornisce trasferimento oggetto (anziché flussi) e offre una persistenza di trasporto opzionale (utile nel caso in cui il mittente o il destinatario non sia in esecuzione). Tutto questo è vero per WCF su MSMQ ma WCF significa più overhead, complessità e configurazione coinvolte e nessun valore aggiuntivo (in questo caso).
Invia come questo:
MessageQueue queue = new MessageQueue(".\\private$\\ImagesQueue");
Message msg = new Message
{
Formatter = new BinaryMessageFormatter(),
Body = myImage,
Label = "Image"
};
queue.Send(msg);
ricezione:
MessageQueue queue = new MessageQueue(".\\private$\\ImagesQueue");
msg = queue.Receive(TimeSpan.FromMilliseconds(100));
if (msg != null)
{
msg.Formatter = new BinaryMessageFormatter();
myImage = (MyImage)msg.Body;
}
coda deve essere creato prima dell'uso. Si può fare che quando l'applicazione viene avviata
hanno questo in classe:
private const string queueName = ".\\private$\\ImagesQueue";
e in applicazione di inizializzazione/startup assicurarsi di avere la coda:
if (!MessageQueue.Exists(queueName)
{
MessageQueue myQueue = MessageQueue.Create(queueName);
}
Con questo meccanismo della coda, Il motore non deve attendere il completamento del Viewer. Ciò migliorerebbe molto le prestazioni percepite perché è possibile generare l'immagine successiva (in realtà numero di esse) mentre quella precedente è ancora visualizzata. Non è così facile da ottenere con i file mappati in memoria.
MSMQ è un componente di Windows standard ma deve essere abilitato nelle funzionalità di Windows.
fonte
2012-02-23 10:07:29
Essere pedanti qui ... i propri test di unità dovrebbero dimostrare se è sia corretto che affidabile. –
@AdamHouldsworth Non ho notato che l'OP dice che stanno addirittura utilizzando i test unitari. Ciò significa che anche questa affermazione era in qualche modo irrilevante. –
@ Mr.Disappointment Non proprio. I test unitari andrebbero a dimostrare l'affidabilità e il successo funzionale dell'approccio - i capisaldi della domanda. Anche il punto fondamentale era che se non stavano usando i test unitari per provare questa roba, dovrebbero esserlo. –