1

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

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

由于到 SQL Server 的 linq 数据上下文也是单线程的,我如何从 WPF 复制这个“调度程序”的想法并创建一个类似的对象,我可以用它来编组对我的公共数据上下文的请求,以便始终来自“公共 SQL 线程”。

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

有谁知道类似这个想法的任何东西或任何可以帮助我做到这一点的材料?

4

1 回答 1

0

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

重新审视大局:

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

于 2009-10-16T11:21:37.830 回答