- На моей стороне службы WCF есть переменная Collection и метод Add. Метод Add записывает некоторые записи в коллекцию, в то время как что-то срабатывает.
Вот требования: Теперь на стороне клиента есть Поток, который каждую секунду считывает Коллекцию на сервисной стороне WCF, удаляет записанные ранее записи и отображает их на переднем плане.
Мой вопрос : как лучше контролировать одновременность чтения и записи (не является потокобезопасным, поэтому при его чтении будут получены повторяющиеся значения)
В настоящее время я использую таймер для параллелизма, когда срабатывает событие таймера, заставляю таймер останавливаться, пока чтение не закончится. Затем включите таймер (для предотвращения не полностью выполненного события таймера снова запустите следующую операцию). Monitor используйте Monitor.TryEnter в качестве блокировки потока, и код выглядит следующим образом:
void ReadFromService()
{
//do........
timer.start();//
}
Timer timer=new Timer(1000);
timer.Elapsed +=(s,e)=>{
timer.stop();
ReadFromService();
};
timer.start();
Я думаю, что это не очень хорошая идея, я надеюсь, что кто-то может дать мне хорошее предложение.