2013-05-19 5 views
0

내 코드에서 skydrive 컨텐츠에 액세스하려고합니다. 다음 코드는 이전에 작동했지만 sundently 두 번째 결과 실행을 중지했습니다. 뒤에 숨겨진 마이크로 소프트가 무엇인지 잘 모름! 도와주세요. 제발 범위가 유효하고 win8에 대한 내 애플 리케이션에 액세스 할 수 없습니다.SkyDrive API 액세스 코드 언젠가 작동하지 않는 경우

var authClient = new LiveAuthClient(); 
var scopes = new[] { "wl.signin", "wl.skydrive", "wl.basic" }; 
Task<LiveLoginResult> resultTask = authClient.LoginAsync(scopes); 
var client = new LiveConnectClient(resultTask.Result.Session); 
dynamic result1 = client.GetAsync("me/skydrive"); 


dynamic result2 = result1.Result; 

result1 = client.GetAsync("me/skydrive"); 
result2 = result1.Result; 

감사 Kajal

+0

스토어 앱인 경우 '결과'를 차단하는 대신 'await'을 사용하거나 상점에서 괜찮을 수도 있습니다. 즉, '동적'이 문제를 일으키지 않는 한 그 코드 스 니펫에 아무 것도 보이지 않습니다. 나는 대신'var'을 시도 할 것입니다. –

+0

상태는 "WaitingForActivation"으로 남아 있고 로컬 창의 세션 범위에는 "null"이 표시됩니다. 여전히 운이 좋지 않습니다. 지난 2 개월 동안 실행 중이었고 모든 것이 잘 진행되고있었습니다. –

답변

2

귀하의 코드가 비동기/await를 부족하다.

코드가 이벤트 본문 내에있는 경우 async Task<T> 인 경우 async void을 사용하십시오. T 반환 유형 데이터의 클래스 이름.

var authClient = new LiveAuthClient();

var scopes = new [] { "wl.signin", "wl.skydrive", "wl.basic"};

작업 결과 태스크 = 대기 authClient.LoginAsync (scope);

var client = new LiveConnectClient (resultTask.Result.Session);

동적 결과 1 = 기다려야합니다. 클라이언트 .GetAsync ("me/skydrive");

dynamic result2 = result1.Result;

result1 = 클라이언트 대기 .GetAsync ("me/skydrive");

result2 = result1.reesult;

+1

+1 문제가 해결되는지 확신 할 수 없지만 차단보다 확실히 좋은 방법입니다. –