Программа выполняется асинхронно в нескольких потоках. Объекты класса "MyObjectClass " между собой не взаимосвязаны. Функция " OnChangeValue" (см код ниже) может быть вызвана для одного объекта одновременно из двух потоков. Нашел конструкцию | Код | MethodInvoker mI = new MethodInvoker(delegate()... |
, за время тестирования ошибок одновременного доступа не было. Проблема в том, что не понимаю как работает данная конструкция, и не уверен, что делаю правильно. Вопрос, правильно ли я делаю с этической точки зрения?
| Код | private void OnChangeValue(MyObjectClass sender, double value) { sender.ChangeValue -= OnChangeValue; MethodInvoker mI = new MethodInvoker(delegate() {
if (sender.MyData.ChangeDataWithRezCopy(value) > 0) { sender.Save(Application.StartupPath + "\\UserDetails\\"); } }); Invoke(mI); sender.ChangeValue += OnChangeValue; }
|
|