Используйте Web Money - это очень удобно

четверг, 8 мая 2008 г.

Проблема одновременного доступа к элементу списка из кода.

Проблема заключается в том, что в отличии библиотеки документов в списке не реализован checkOut. И если вы напишете обработчик событий которы пишет в какой-то элемент списка есть вероятность(я на убедился на своем опыте что она велика) попытки записи в элемент одновременно двумя инстансами обработчика.
Решение простое:

static int count;
static int queue;
int myQueueNumber;
lock(count)
{
count++;
myQueueNumber= count;
}
if (queue==myQueueNumber)
{
//code
queue++;
}

И соответственно простая организация очереди для инстансов этого обработчика.
Если обработчиков много и они разного типа все выносится в отдельный класс объект которого присутствует во всех обработчиках. Или используете наследование.

Комментариев нет: