创建类似于Dispatcher for SQL DataContext的东西

时间:2009-10-16 09:26:43

标签: c# sql sql-server wpf dispatcher

我当前的项目是带有SQL Server后端的WPF应用程序。

在WPF中,UI只能由UI线程修改。如果需要在另一个线程上进行UI修改,则可以调用调度程序对象并给出操作。实际上,这是将我的Delegate映射到WM_消息。

由于到SQL Server的linq datacontexts也是单线程的,我怎么能从WPF复制这个“Dispatcher”的想法并创建一个类似的对象,我可以用它来组织对我的公共datacontext的请求总是来自“公共SQL”线程”。

我猜我需要在启动时创建一个线程,它初始化数据上下文然后休眠,直到被SqlThread.Invoke()方法唤醒。

有没有人知道任何类似于这个想法或任何可能帮助我这样做的材料?

1 个答案:

答案 0 :(得分:0)

如果你的意思是LINQ-to-SQL DataContext,我建议不要这样做;使用DataContext作为短暂的工作单位,然后Dispose();不要将它保留用于许多不同的目的(存在过时数据,缓存增长,线程,并发以及(重要的)如何处理故障/回滚的问题。)

重新审视:

基本上,您正在描述工作队列,例如生产者/消费者队列。有很多这样的,或者它们相对容易编写(例如,请参阅herehere;只需添加一个循环来出列+处理项目)。 IIRC .NET 4.0还包括(在并行扩展中)此类预构造的构造。