/// <summary> /// 非同期処理によるPolling /// </summary> public static async void PollingAsync(Action<UserViewModel> togglePage, UserViewModel userVM) { await Task.Run( () => { TimerCallback timerDelegate = new TimerCallback( async (_) => { if (felica.TryConnectionToCard()) { try { string idm = FelicaHelper.ToHexString(felica.GetIDm()); if (idm != null) { User user = client.AttendIdm(idm); userVM.Sid = user.Sid; userVM.Name = user.Name; togglePage(userVM); await Task.Delay(1000); userVM.Sid = ""; userVM.Name = ""; togglePage(userVM); } } catch (AccessViolationException e) { Log.Write(e.ToString()); Console.WriteLine(e.ToString()); } catch (NullReferenceException e) { Log.Write(e.ToString()); Console.WriteLine(e.ToString()); } catch (InvalidOperationException e) { Log.Write(e.ToString()); Console.WriteLine(e.ToString()); } } }); Timer timer = new Timer(timerDelegate, null, 0, pollingAsyncInterval); }); }
public void TogglePage(UserViewModel userVM) { SelectedPage = SelectedPage == Pages.First() ? Pages.Last() : Pages.First(); SelectedPage.UserVM = userVM; }
static AtterecoViewModelBase() { _UserVM = new UserViewModel(); }