webservice에 대한 많은 호출로 메트로 애플리케이션을 작성 중입니다. 때때로 웹 서비스가 약간 느립니다. 그리고 내 데이터가 다운로드 될 때까지 페이지 내에서 기다리는 것을 원하지 않습니다.메트로 앱, UI가 고정되지 않음
그러나 내 데이터가로드 될 때까지 나의 뒤로 버튼이 비활성화됩니다. 큰 문제가 있습니다.
그래서 나는 시도했다 :
try
{
await Task.Run(() =>
{
Dispatcher.RunAsync(CoreDispatcherPriority.High,
() => ViewModel.InitAsync(date)).AsTask(_cts.Token);
}, _cts.Token);
}catch(Exception e)
{
Debug.WriteLine("HomePage, LoadState : "+e);
}
참고;
나는 Task.Run을 사용하여 취소 토큰을 사용할 수 있습니다. 그리고 Dispatcher.RunAsync는 UI를 고정시키지 않아야합니다. 이것은 LoadState 페이지 내에서 사용됩니다.
어떻게이 문제를 해결할 수 있습니까?
감사합니다.
(내 문제가 해결되지 않음)로 업데이트 :
try
{
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() =>
ViewModel.InitAsync(date)).AsTask(_cts.Token);
}catch(Exception e)
{
Debug.WriteLine("HomePage, LoadState : "+e);
}
경우이 코드가 나타나지 않습니다 귀하의 경우
, 당신은이 작업을 수행 할 수 있어야한다? 'AsTask' 호출에서 취소 토큰을 지정할 수 있다면'Task.Run'이 필요 없다고 생각합니다. –
@JonSkeet 페이지로드 중 표시됩니다. – David
그러면 웹 서비스 호출이 완료 될 때까지 페이지로드를 완료하지 않습니다. UI 스레드를 차단하지 않더라도 뒤로 버튼이 페이지로드 완료에 연결되어있는 것 같습니다. –