2017-01-28 3 views
-1

私は既存のアプリケーション(〜500kloc)にdocumentdbを追加しています。私がしたい場合でも、私はこのアプリケーションのすべての方法を非同期再作成することはできません方法はありません。同期アプリケーションでdocumentdb c#APIを呼び出す方法

すべてのC#APIは非同期です。これらの呼び出しと同期する明白な方法は.Wait()です。これはいくつかのMSのサンプルアプリケーションが行っているものですが、前に私が以前似たような質問をしたときにコンセンサスが「しないでください」というメッセージが表示されます

この正確な質問は答えがありませんでした。一つは、「.WAITを行う」と述べた一つは上の「使用が待っています」と述べ

「あなたはそれを行う傾ける」と「利用をお待ちしており」我々はまだ非同期であるため、これらのコメントはどれも答え

を提供しない、その後、問題を解決するdoesntの

答えて

1

を呼び出すことにより、デッドロックを回避することができますタスk(同期コンテキストがある場合)(ASP/WPF/Winforms) つまり、DocumentDB C#APIで.Resultまたは.Waitを直接呼び出すことは安全です。

1

あなたが使用して非非同期メソッドからあなたの非同期メソッドを呼び出すことができます。

var myThread = System.Threading.Tasks.Task.Run(async() => await  
DoSomethingAsync()); 

をそして、あなたはすべてのDocumentDB非同期APIを実行するためにTask.Runを使用します

myThread.Wait(); 
+0

そして 'myThread.Wait()'を実行しますか? – pm100

+0

はい、正しいです –

関連する問題