多线程读、写DataTable的内容的问题
程序中有这样一个功能:
自己定义一张表 mytable(DataTable类型的),有线程A 不停地往mytable中添加数据,
同时,有线程B、C、D…… (线程数根据mytable的行数决定,mytable 行数越多,这里的线程越多)不停地修改mytable每一行中某列的内容。
请大家帮个忙,这个功能如何实现?最好能提供点示例代码
附:
mytable (string name,string position,srring tag)
name1,aaa,1
name2,bbb,1
name3,ccc,1
name4,ddd,1
线程A向 mytable中添加数据,name 列已有的则修改其另两列的内容,若 name列没有则新加。
只要 mytable 中有数据,就根据mytable的行数,相应的开几个线程,逐行判断,tag 列是否为1,是则 修改position的内容,同时将tag改为0,则其他线程不必再修改其内容
------解决方案--------------------帮你顶,如果mytable的数据多的话 那得多少线程啊
------解决方案--------------------datatable声明时加上volatile关键字,目的是让编译器知道这个实例是会有多个线程访问的。这样就可以保证多个线程安全访问,而且能够保证每个线程得到的数据都是最新的数据。
另外不需要那么多线程的,其实再另外添加一个线程就可以了,另外一个线程实时遍历datatable中的全部行,然后检查相应列数据,再做修改就可以了,我敢说楼主你想创建1000个线程那是不可能的,如果同时创建那么多线程你电脑能受得了吗。
------解决方案--------------------楼主那么热心啊
偶也帮你顶
------解决方案--------------------太高难了 容易暴掉
------解决方案--------------------代码有问题吧, 你的列数, 行数是多少?
如果可以把你的代码(TABLE设计的代码,绑数据的代码, 变更事件的代码贴出来)
------解决方案--------------------可以用AutoResetEvent 来实现让读取的线程先完成,再将写数据的线程激活运行.
AutoResetEvent dataEvent = new AutoResetEvent(false);
void ReadDataThread()
{
//...读取数据
dataEvent.Set();
}
void WriteDataThread()
{
dataEvent.WaitOne();
// ... 写数据.
}
------解决方案--------------------学习!
------解决方案--------------------噢噢
好像蛮复杂的
学习学习
------解决方案--------------------顶一下
好像没人气蛮