2012-07-11 4 views
0

SkyDrive에서 파일을 다운로드하려고하는데 동기식 클래스에서 비동기 호출을 래핑했습니다. 그러나 WaitOne을 호출하면 모든 것이 차단되고 EventHandeler는 결코 호출되지 않습니다.WP7 & Skydrive WaitOne blocked everything

_client = new LiveConnectClient(connection.Session); 
_client.GetCompleted += new EventHandler<LiveOperationCompletedEventArgs>(client_GetCompleted); 
_client.GetAsync("me/skydrive/files"); 

_autoEvent.WaitOne(); //get's stuck here client_GetCompleted never called. 

.... 


void client_GetCompleted(object sender, LiveOperationCompletedEventArgs e) 
{ 
    ///do stuff 
    _autoEvent.Set(); 
} 

답변

0

_autoEvent.WaitOne() 호출을 제거하면 get 완료 이벤트가 발생합니다.

0

UI 스레드를 차단하고있는 것 같습니다. (더 많은 코드를 게시하면 도움이 될 것입니다.) ui가 아닌 새로운 스레드에서 첫 번째 부분을 실행 해보십시오.

System.Threading.ThreadPool.QueueUserWorkItem(o => 
{ 
    _client = new LiveConnectClient(connection.Session); 
    _client.GetCompleted += 
    new EventHandler<LiveOperationCompletedEventArgs>(client_GetCompleted); 
    _client.GetAsync("me/skydrive/files"); 

    _autoEvent.WaitOne(); //get's stuck here client_GetCompleted never called. 

    <other code> 
});