WaitHandle - Silverlight
От: Аноним  
Дата: 16.08.11 12:35
Оценка:
Привет!

Есть такой вот код


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 не попадает.
Убираю ивенты — всё ок.
Что не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.