2009-10-16 7 views
1

Mon projet actuel est une application WPF avec un back-end SQL Server.Création de quelque chose de similaire à Dispatcher for SQL DataContext

Dans WPF, l'interface utilisateur peut uniquement être modifiée par le thread d'interface utilisateur. Si une modification de l'interface utilisateur doit être effectuée sur un autre thread, l'objet dispatcher peut être appelé et déclenché une action. Effectivement, ceci est mappage de mon délégué à un message WM_. Comme les datacontexts linq vers SQL Server sont également à simple thread, comment pourrais-je copier cette idée de "Dispatcher" de WPF et créer un objet similaire que je peux utiliser pour rassembler des requêtes sur mon datacontex public pour être toujours du "Public Thread SQL ".

Je suppose que je devrais créer un thread au démarrage qui initialise les contextes de données, puis dort jusqu'à ce que la méthode SqlThread.Invoke() le réveille.

Est-ce que quelqu'un connaît quelque chose de similaire à cette idée ou tout autre matériel qui pourrait m'aider à le faire?

Répondre

0

Si vous voulez dire un LINQ-to-SQL DataContext, je déconseille cela; utiliser DataContext s comme une unité de travail de courte durée, puis Dispose(); ne le conservez pas à des fins différentes (il y a des problèmes avec les données obsolètes, la croissance du cache, le thread, la concurrence, plus (surtout) comment gérer les échecs/rollbacks).

Re la plus grande image:

Essentiellement, vous décrivez une file d'attente de travail, comme une file d'attente producteur/consommateur. Il y en a beaucoup, ou ils sont relativement faciles à écrire (par exemple, voir here ou here, il suffit d'ajouter une boucle pour déqueue + traiter les éléments). IIRC .NET 4.0 inclut également (dans les extensions parallèles) de telles constructions pré-conservées.

+0

Merci, l'astuce .net 4.0 est cool mais je ne pense pas pouvoir l'attendre. En ce qui concerne l'utilisation courte de datacontexts - c'est comment l'application le fait partout ailleurs, mais dans l'interface utilisateur j'ai besoin de tous les contrôles pour avoir la même version de l'entité, qu'elle soit ancienne ou non. –

Questions connexes