Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Доступ к методу


Автор: Vladimir_Petrov 2.5.2010, 10:46
Программа выполняется асинхронно в нескольких потоках. Объекты класса "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;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)