Как сделать потокобезопасный Dictionary
От: Аноним  
Дата: 19.10.10 18:03
Оценка:
Есть метод DoSomething в котором происходит асинхронный запрос к БД для работы с объектом имеющего уникальный ID, нужно чтобы пока обрабатывается объект новый асинхронный запрос не прошел.


public static void DoSomething( int ID )
{
   /// Здесь асинхронный вызов некой хранимки с передачей ей ID,
}

public static void DoSomethingFinished( .. )
{
  /// Здесь получаем результаты асинхронного запроса
}



т.е. нужно немного доработать , примерно так


private static Dictionary<int, bool> m_InProc;

public static void DoSomething( int ID )
{
   if ( m_InProc.ContainKey( ID ) )
   {
      if ( m_InProc[ID] )
         return;
   }

   m_InProc[ID] = true;
   /// Здесь асинхронный вызов некой хранимки с передачей ей ID,
}

public static void DoSomethingFinished( .. )
{
  /// Здесь получаем результаты асинхронного запроса
  m_InProc[ID] = false;
}


Возможно для этих целей лучше использовать какие-то объекты синхронизации ( мутекс и т.п. ).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.