2012-10-22 23 views
5

Il componente aggiuntivo Outlook 2010 (che utilizza VSTO) esegue alcune chiamate al servizio Web in un thread diverso quando viene inviata una mail. Mi piacerebbe visualizzare una piccola notifica pop-up non modale (come quelle di Skype/yahoo/Windows live messenger) che mostra il risultato della chiamata al servizio web.Notifica popup per il componente aggiuntivo di Outlook (chiamata Form.Show() dal problema del thread in background)

Stavo cercando di personalizzare il Notification Window project secondo i miei requisiti. Sembra funzionare bene quando chiamato da un gestore di eventi click di una forma del mio componente aggiuntivo utilizzando il seguente codice:

private void btnOk_Click(object sender, EventArgs e) 
{ 
    PopupNotifier notifier = new PopupNotifier(); 
    notifier.DisplayNotification("Test"); 
} 

Tuttavia, quando lo stesso metodo notifier.DisplayNotification ("Test") si chiama dal thread in background che effettua la chiamata al servizio web, il notificatore si blocca; La sua forma è visualizzata sullo schermo, ma nessun testo, colore o animazione sembra funzionare. Rimane fermo fino alla chiusura di Outlook.

Ho effettuato alcune ricerche e ho scoperto che ciò potrebbe accadere poiché il notificatore utilizza il metodo Show() invece di ShowDialog() per visualizzare il suo modulo. E poiché non desidero una finestra di dialogo modale per la notifica popup, non posso cambiare neanche il metodo in ShowDialog().

Secondo altri articoli, ho anche provato a chiamare il metodo utilizzando backgroundWorkers, delegati, MethodInvoker, ecc. Ma non è stato possibile ottenere il risultato desiderato.

Tuttavia, mentre ho provato quanto sopra, ho notato che lo stesso accade non solo per il notificatore pop-up, ma per qualsiasi forma semplice. Se lo creo nel thread in background e chiamo il metodo Show(), si blocca, mentre nella stessa situazione ShowDialog() sembra funzionare correttamente.

Qualsiasi idea su come risolvere questo problema sarebbe molto apprezzata.

risposta

Problemi correlati