Multithreading WPF nel Binding

Cristian Civera

di Cristian Civera, in WPF, domenica 21 ottobre 2007 ore 23.40

Devo segnalarvi un errore nello script #17 dove spiego come implementare INotifyPropertyChanged. Di sbagliato c'è la frase in cui dicevo che è obbligatorio invocare l'evento tramite il Dispatcher, quindi sul thread principale, e mostravo come chiamare la BeginInvoke.

In realtà il motore di Binding sull'evento PropertyChanged internamente controlla già se il thread corrente è quello principale. In caso contrario accoda l'evento sul Dispatcher con priorità DataBind. Quindi quello che proponevo non era sbagliato, ma inutile, risparmiando solo del lavoro al motore di Binding.

C'è da dire comunque che non è dato sapere chi utilizza le nostre proprietà, ma non è altrettanto bello mettere della logica specifica di WPF nelle classi (infatti non lo proponevo per il Domain Model). Va comunque fatta attenzione che solo l'oggetto Binding gestisce questo aspetto. Per esempio le CollectionView che lavorano sulle collezioni, s'arrabbiano generando un'eccezione se modichiamo le liste da altri thread. Possiamo però aggirare il problema invocando PropertyChanged e CollectionChanged sul thread principale affidandoci al Dispatcher. Se usate ObservableCollection<T>, vi basta sovrascrivere OnPropertyChanged e OnCollectionChanged.

Mi scuso per la mala informazione...

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
I più letti del mese
TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, .NET Framework 4.0, ADO.NET Entity Framework, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 4.0, ASPItalia.com, Custom Control, Databinding, Datagrid, HttpRuntime, IIS, Javascript, LINQ, LINQ to Entities, LINQ to SQL, Media Center, Microsoft Expression, Object Oriented Programming, Off Topic, PDC 2008, Silverlight, Silverlight - animazioni, Silverlight 2.0, Silverlight 3.0, User Control, Visual Studio, Windows 7, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Presentation Foundation, Windows Server, Windows Vista, Windows Workflow Foundation, XAML, XBox 360, XHTML, XML, XPS, XSLT
BLOG INFO
  • 199 post, 86 commenti, 42 trackback
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom
IN EVIDENZA