【发布时间】:2011-04-27 14:50:04
【问题描述】:
- 在我的 WCF 服务端有一个 Collection 变量和一个 Add 方法。 Add 方法会在触发某些事件时将一些记录记录到 Collection 中。 以下是要求:现在在客户端,有一个线程每秒读取WCF服务端的Collection,并将之前读取的记录删除并显示到前台。
我的问题是:如何控制读写的一致性会更好。(不是线程安全的,所以读取时会得到重复值)
目前我使用定时器来并发它,当定时器事件被触发时,使定时器停止直到读取结束。然后让 Timer 启动(防止定时器 Event 未完全执行,再次触发下一次 Operation)。我使用Monitor.TryEnter作为线程锁,代码如下:
void ReadFromService()
{
//do........
timer.start();//
}
Timer timer=new Timer(1000);
timer.Elapsed +=(s,e)=>{
timer.stop();
ReadFromService();
};
timer.start();
我认为这不是一个好主意,希望有人能给我一些好的建议。
【问题讨论】:
标签: c# .net multithreading wcf thread-safety