0

SkyDriveからファイルをダウンロードしようとしていますが、非同期呼び出しを同期クラスにラップしました。ただし、WaitOneを呼び出すと、すべてがブロックされ、EventHandelerが呼び出されることはありません。

 _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();
}
4

2 に答える 2

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>
});
于 2012-07-11T07:20:28.010 に答える
0

_autoEvent.WaitOne() 呼び出しを削除すると、get completed イベントが発生します。

于 2012-07-11T06:47:00.163 に答える