我想知道是否有很棒的书或网站详细讨论了如何以多线程方式使用DataTable。它应该详细讨论它在添加,获取,更新和删除行时的行为方式。它还应该讨论使用锁,接受更改和其他重要细节的正确方法。
答案 0 :(得分:5)
DataTables并不特别:只需从DataTable
实例读取就是线程安全的(正如文档中所述),但如果您更改实例的任何方面,那么确保您同步访问权限。
除了寻找特定于多线程数据表的内容之外,您还应该阅读有关线程的一般信息。为此,你不能错过Joseph Albahari的Threading in C#。
(话虽如此,请查看相关主题的this discussion thread。)
答案 1 :(得分:4)
我认为你不会在这个主题上找到大量的信息。对于一本书来说,这是一个非常狭隘的主题,DataTable
并不是真正知道在并行算法中有用的东西。 DataTable
的问题在于DataRow
以晦涩的方式与他们结婚。例如,更改作为主键一部分的DataRow
中的列值将更新父DataTable
的索引。这使得获得有意义的并行吞吐量变得更加困难,因为在进行任何类型的更改时,您几乎必须锁定对所有的访问权限。但是,DataTable
和DataRow
对多个读者来说都是安全的(只要没有作者),所以一切都不会丢失。