async void GetPersonnelVacantAsync() { var token = cancellationTokenSource.Token; try { await Task.Factory.StartNew(async() => { while (true) { try { personnel = rivERWebService.GetPersonnelReadRequest(Helpers.Settings.PersonnelID).Result; foreach (var request in personnel.Requests) { if (!Requests.Any(r => r.RequestID == request.RequestID)) { Requests.Add(request); } else { var alarmRequest = Requests.FirstOrDefault(r => r.RequestID == request.RequestID); alarmRequest.Alarm = request.Alarm; } } foreach (var request in Requests) { if (!personnel.Requests.Any(r => r.RequestID == request.RequestID)) { Requests.Remove(request); } } await Task.Delay(3000); } catch (Exception e) { System.Diagnostics.Debug.WriteLine("Trying to read personnel: {0}", e.Message); await Task.Delay(7000); } } }, token, TaskCreationOptions.LongRunning, TaskScheduler.Default); } catch (OperationCanceledException e) { System.Diagnostics.Debug.WriteLine("Cancel GetPersonnelVacantAsync ex {0}", e.Message); } }
public RoomsViewModel(INavigation navigation) : base(navigation) { rivERWebService = new RivERWebService(); beaconRangingService = DependencyService.Get <IBeaconRangingService>(); currentRoom = new Room(); personnel = new Personnel(); requests = new ObservableCollection <Request>(); Commands.Add("AcknowledgeCommand", new Command <Request>(OnAcknowledgeCommand)); beaconRangingService.DidRangeBeacons += Beacon_DidRangeBeacons; beaconRangingService.StartMonitoring("B9407F30-F5F8-466E-AFF9-25556B57FE6D", "ER-Rooms"); //beaconRangingService.StartMonitoring("487C659C-1FE2-4D2A-A289-130BBD7E534F", "ER-Rooms"); GetPersonnelVacantAsync(); }
async void GetPersonnelVacantAsync() { var token = cancellationTokenSource.Token; try { await Task.Factory.StartNew(async() => { while (true) { personnel = rivERWebService.GetPersonnelReadRequest(Helpers.Settings.PersonnelID).Result; foreach (var request in personnel.Requests) { if (!Requests.Any(r => r.RequestID == request.RequestID)) { Requests.Add(request); } Requests.Where(r => r.RequestID == request.RequestID) .Select(r => { r.Alarm = request.Alarm; return(r); }); } await Task.Delay(3000); if (token.IsCancellationRequested) { break; } } }, token, TaskCreationOptions.LongRunning, TaskScheduler.Default); } catch (OperationCanceledException e) { System.Diagnostics.Debug.WriteLine("Cancel GetPersonnelVacantAsync ex {0}", e.Message); } }