24 messaggi dal 19 novembre 2008
Buon giorno a tutti!
Espongo subito il mio problema:
Sto creando un mio usercontrol, nel quale ho una lable e una listView. Questo mio usercontrol dovra comunicare con un wf, in prartica il wf passera dei dati alla label e alla listview, per effettuare questa comunicazione (essendo thread diversi) ho creato questo modulo che lavora in modo sincrono :

Imports System.Runtime.CompilerServices
Imports System.Windows.Threading
Public Class Extentions

End Class

<Extension()> Module Extensions
'Action è un delegate che incapsula un metodo che non restituisce nulla
Private _Label As Label
Private _Msg As String
Private EmptyDelegateLabel As New Action(AddressOf AggiornaDisplay)

Private _ListView As ListView
Private _Item As Label
Private EmptyDelegateListView As New Action(AddressOf AggiornaListView)

'******** inserimento sincrono per label

<Extension()> Sub Refresh(ByVal ctrl As UIElement, ByRef msg As String)
_Label = ctrl
_Msg = msg
ctrl.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegateLabel)
End Sub

Private Sub AggiornaDisplay()
_Label.Content = _Msg
End Sub

'******* inserimento sincrono per ListView

<Extension()> Sub Refresh(ByVal List As ItemsControl, ByRef Item As Label)
_ListView = List
_Item = Item
List.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegateListView)
End Sub

Private Sub AggiornaListView()
_ListView.Items.Add(_Item)
End Sub
End Module

Il codice per l'inserimento dei dati nella label viene esequito correttamente, mentre il codice per l'inserimneto di un nuovo Item all'interno della listView viene esequito una sola volta, la seconda volta che viene esequito genera un errore :

"TargetInvocationException non è stata gestita, Eccezione generata dalla destinazione di una chiamata"

Qualcuna mi sa spiedare per quale motivo dal secondo inserimento in poi viene generato questo errore? E come faccio a risolverlo? Qual'è la procedura corretta per fare un inserimento sincrono in una ListView?

grazie per l'attenzione che mi prestate!

Essere vivo richiede uno sforzo maggiore del semplice respirare.
Guarda nell'innerException, sicuramente c'è il dettaglio dell'errore che si è verificato. La tecnica in teoria è giusta

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC