2013-07-08 3 views
1

Я хочу создать универсальный метод расширения, который получит IQueryable, и будет выполнять операцию (например, получить десятку элементов) в отдельном потоке/задаче таким образом, чтобы она была потокобезопасной.Thread safe IQueryable extension method

может кто-то пожалуйста, дайте мне пример кода правильный способ сделать это

Благодаря

ответ

0

Нечто подобное

public static List<T> GetTopN<T>(IQueryable<T> inData, int n) 
    { 
     List<T> outData = new List<T>(n); 

     lock (inData) 
     { 
      int i = 0; 
      foreach (T t in inData) 
      { 
       if (i >= n) 
       { 
        return outData; 
       } 

       i++; 

       outData.Add(t); 
      } 
     } 

     return outData; 
    }