Загрузить основной набор данных, но использовать в нескольких методах - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть веб-страница, которая содержит 4 сетки Silverlight. Каждый из них вызывает веб-службу, которая, в свою очередь, использует LinqToSql для извлечения данных из базы данных SQL через сохраненный процесс.

Используется тот же хранимый процесс, и его запуск занимает несколько секунд, поэтому я подумал, что смогу как-то извлечь данные из сохраненного процесса один раз, а затем использовать этот «основной» список данных для других методов в качестве источника данных.

public class DataRepository
    {
        private DynamicsGPDataContext db = new DynamicsGPDataContext();
        List<Part> dohParts = new List<Part>();
        bool partsLoaded = false;

        private void LoadAllParts()
        {
            //all parts loaded in here and stored in dohParts
        }

Теперь в каждом из моих методов я могу использовать dohParts в качестве источника данных, но поскольку они используются асинхронно, как я могу сказать им ждать, пока dohParts получит данные?

Или есть лучший способ сделать это?

1 Ответ

0 голосов
/ 19 апреля 2011

Один из вариантов вашей текущей реализации:

private List<Part> _dohParts;
public List<Part> dohParts
{
  get 
  { 
     if(_dohParts == null || _dohParts.Count == 0)
        LoadAllParts();

     return _dohParts;
  }
}
...