Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [VB.NET 2010] Delegate, Invoke

    Ciao a tutti,

    Ho bisogno di una spiegazione Umana di questa parte di codice....

    codice:
        
        Delegate Sub SetTextCallback(ByVal [text] As String)
        Private Sub UpDateText(ByVal [text] As String)
            If Me.rtbTestoRicevuto.InvokeRequired Then
                Dim Cmp As New SetTextCallback(AddressOf UpDateText)
                Me.Invoke(Cmp, New Object() {(text)})
            Else
                Me.rtbTestoRicevuto.Text &= [text]
            End If
        End Sub
    La Sub UpDateText viene chiamata dal metodo di ricezione dati su porta seriale.
    InvokeRequired non capisco cosa significhi...
    Da MSDN :
    "Ottiene un valore che indica se il chiamante deve utilizzare un metodo Invoke per eseguire chiamate di metodo al controllo, in quanto si trova in un thread diverso da quello in cui è stato creato il controllo."
    Proprio non lo capisco.

    subito dentro if crea il delegato e ok....

    con me.invoke dovrebbe essere il modo per richiamare il delegato (ma ha che scopo, non potevo settare subito il testo della mia rtbTestoRicevuto?), ma da doc msdn diventa incompresibile
    "Consente di eseguire il delegato specificato nel thread proprietario dell'handle di finestra sottostante del controllo."

    Ciao
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Supponendo che rtb stia per Rich Text Box, non puoi modificare lo stato di un controllo dell'interfaccia grafica da un thread diverso da quello di appartenenza. Quel workaround serve a quello.

    P.s. Sezione sbagliata
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    si è una rich text box.....
    Il thread viene invocato qui :
    codice:
    Private Sub SerialPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles         SerialPort1.DataReceived
            UpDateText(SerialPort1.ReadExisting())  
        End Sub
    Non capisco proprio.....
    SerialPort_DataReceived viene chiamata in modo asincrono dall'oggetto SerialPort (oggetto vb), poi questo va a chiamare quella funzione....
    Come faccio ad essere in un thread diverso da quello di appartenenza...

    Hai ragione per la sezione non me ne sono accorto
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Come faccio ad essere in un thread diverso da quello di appartenenza...

    The DataReceived event is raised on a secondary thread when data is received from the SerialPort object
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Quote Originariamente inviata da oregon Visualizza il messaggio
    The DataReceived event is raised on a secondary thread when data is received from the SerialPort object
    Ahhhhhhhhhhh ok, la questione è percui a monte...
    Non lo avevo letto quel pezzo, o meglio non mi era proprio venuto in mente di vedere la doc di quel metodo.

    L'invocazione del delegato la prendo di conseguenza come un dato di fatto, è così e deve essere così....

    Per il resto è tutto abbastanza chiaro, grazie mille per l'aiuto.
    Che mestiere difficile.....essere da soli ancora di più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.