Привет!
Есть такой вот код
try
{
AutoResetEvent[] autoLoadEvents = new AutoResetEvent[3];
for (int i = 0; i < autoLoadEvents.Count(); i++) autoLoadEvents[i] = new AutoResetEvent(false);
var selDate = cldCurrentMonth.SelectedDate ?? DateTime.Now;
//time periods
BookTimePeriodDomainContext bookTimeCtx = new BookTimePeriodDomainContext();
var timePeriodsQuery = bookTimeCtx.Load(bookTimeCtx.GetBookTimePeriodsQuery());
timePeriodsQuery.Completed += (send, args) =>
{
var timePeriod = timePeriodsQuery.Entities.Single();
ScheduleTimePeriods = ObtainTimePeriods(selDate, timePeriod);
//
//set time periods loaded
autoLoadEvents[0].Set();
};
//cars
CarDomainContext carCtx = new CarDomainContext();
var loadCarsQuery = carCtx.Load(carCtx.GetCarsQuery());
loadCarsQuery.Completed += (send, args) =>
{
Cars = loadCarsQuery.Entities.ToList();
//
//set cars loaded
autoLoadEvents[1].Set();
};
TaskDomainContext taskCtx = new TaskDomainContext();
var loadTasksQuery = taskCtx.Load(taskCtx.GetTasksQuery());
loadTasksQuery.Completed += (send, args) =>
{
Tasks = loadTasksQuery.Entities.ToList();
//
//set tasks loaded
autoLoadEvents[2].Set();
};
//wait while all data loaded
WaitHandle.WaitAll(autoLoadEvents);
PopulateDataGrid();
}
catch (Exception exc)
{
}
почему-то когда добавляю логику с евентами и WaitHandle.WaitAll(autoLoadEvents);
перестает работать — ни эксепшена ни в Completed не попадает.
Убираю ивенты — всё ок.
Что не так?