Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Handler in thread separato
Forum - C# / VB.NET - [VB.NET] Handler in thread separato

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve a tutti,
Utilizzo un controllo NotifyIcon che faccio comparire da un thread separato, ma sembra che a causa di ciò non mi vadano gli handler degli eventi.
Il codice è semplice. Avvio un thread separato che a un certo punto chiama ShowBalloonTip, e in effetti il Balloon viene mostrato.
Ma se io ci clicco sopra (sul balloon), non mi parte l'handler dell'evento BalloonTipClicked (che ho creato)

Ho fatto una prova, se faccio mostrare il balloon dal thread principale mi funziona l'handler.

Come risolvo?

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:37
Mercoledì, 23/03/2011
Dal thread separato richiama:
Codice sorgente - presumibilmente Plain Text

  1. this.Invoke(delegate() { NotifyIcon.ShowBaloonTip(); });



"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:19
Mercoledì, 23/03/2011
E' VB.NET quel linguaggio? :noway:
In ogni caso...
Ho messo questo codice:
Codice sorgente - presumibilmente C# / VB.NET

  1. 'Nelle dichiarazioni
  2. Delegate Sub NotifyIconDelegate(ByVal Time As Integer)
  3. 'Nel thread separato
  4. Me.Invoke(New NotifyIconDelegate(AddressOf ApplicationBarIcon.ShowBalloonTip), 1000)



Ma l'handler non da segni di vita
(questo è l'handler:)
Codice sorgente - presumibilmente VB.NET

  1. Private Sub ApplicationBarIcon_BalloonTipClicked(ByVal sender As Object, ByVal e As System.EventArgs) Handles ApplicationBarIcon.BalloonTipClicked
  2. 'codice
  3. End Sub


PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 15:32
Martedì, 29/03/2011
Ho provato con questo codice:
Codice sorgente - presumibilmente VB.NET

  1. 'Dichiarazioni
  2. Delegate Sub NotifyIconDelegate(ByVal Time As Integer)
  3.  
  4. 'Nel codice del thread separato
  5. ApplicationBarIcon.Visible = True
  6. ShowBalloon(10000)
  7.  
  8.  
  9. Private Sub ShowBalloon(ByVal Time As Integer)
  10.         If Me.InvokeRequired Then
  11.             Me.BeginInvoke(New NotifyIconDelegate(AddressOf ShowBalloon), Time)
  12.         Else
  13.             AddHandler ApplicationBarIcon.BalloonTipClicked, AddressOf ApplicationBarIcon_BalloonTipClicked
  14.             ApplicationBarIcon.ShowBalloonTip(Time)
  15.         End If
  16. End Sub
  17.  
  18. 'Handler
  19. Private Sub ApplicationBarIcon_BalloonTipClicked(ByVal sender As Object, ByVal e As System.EventArgs)
  20. MsgBox("Hai cliccato sul Balloon")
  21. End Sub



Non va comunque :_doubt::_doubt:

Up, come faccio?

Ultima modifica effettuata da il 29/03/2011 alle 15:33
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:18
Mercoledì, 30/03/2011
Ho trovato il problema: devo mostrare l'icona dal ThreadGUI (ApplicationBarIcon.Visible = True)

Codice sorgente - presumibilmente VB.NET

  1. Private Delegate Sub ShowNotifyIconDelegate()
  2.  
  3. Private Sub ShowSisTrayIcon()
  4.         If Me.InvokeRequired Then
  5.             Me.Invoke(New ShowNotifyIconDelegate(AddressOf ShowSisTrayIcon))
  6.         Else
  7.             ApplicationBarIcon.Visible = True
  8.         End If
  9.     End Sub


Ultima modifica effettuata da il 30/03/2011 alle 16:19
PM Quote