синхронизация

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

синхронизация

Сообщение Dmitriy Solomnikov » 31.10.2005 (Пн) 16:14

Мне надо обеспечить монопольный доступ к определенному участку кода (процедуре). Пока она выполняется ее нельзя вызывать еще раз - ни из другиз потоков ни из текущего.

Эта процедура - обработчик события, которое может срабатывать пока она (процедура выполняется).

Как лучше это сделать?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2005 (Пн) 16:23

Ну, из текущего её точно уже не вызовешь, а из других - жди mutex, к примеру.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 31.10.2005 (Пн) 16:37

ты знаешь все было бы хорошо, да вот из текущего(того который создал я) оно срабатывает.

Есть форма, на форме есть datagridview, там в одной колонке естьcheckbox. При нажатии на чекбокс срабатывает событие. При проверке некоторых условий, если они не выплняются, происходит сброс этого чекбокса, в результате чего это событие срабатывает еще раз.

PS: Проблему впринципе удалось решть через interlocked, но хотелось бы через события (event или аналог)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2005 (Пн) 16:40

Ы....

А причём здесь многопоточность? :roll:
Такие вещи делаются много лет с помощью static flag as boolean...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 31.10.2005 (Пн) 16:59

GSerg писал(а):А причём здесь многопоточность? :roll:
Такие вещи делаются много лет с помощью static flag as boolean...

В данном случае многопоточность тут совсем не причем.

Так значит только через interlocked да?...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2005 (Пн) 17:03

Нет. Через static flag as boolean.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 31.10.2005 (Пн) 17:14

Ну щаз я так и делаю. Там просто слишком много событий, поэтому нужен атомарный доступ.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList