私はAsync Programmingの新機能です。非同期メソッドがあるかどうかを知りたいのですが、メソッド内で同期メソッドを呼び出すのは本当ですか?はいの場合は、それは何の利点ですか? これはサンプルコードです非同期メソッドのsysncメソッドを呼び出しますか?
0
A
答えて
0
同期メソッドを非同期メソッドから確実に呼び出すことができます。これらのメソッドは、非同期メソッドのコンテキストで通常の方法で、つまり同期して実行されます。
はもちろん、単にあなたの同期方法に非同期実行のいずれかの利点を明らかにしなかったasync
一つに同期メソッドをラップする:あなたが直接BulkInsert
を呼び出した場合、あなたのBulkInsertFileRecords
は、それが正確だろうな方法を実行します。実際には、BulkInsertFileRecords
にはawait
が含まれていないので、それを保持する必要はありません。async
あなたはvoid
同期メソッドとしてそれを書き換え、およびawait
せずに、それを呼び出すことができます。
protected void BulkInsertFileRecords(int requestId) {
BulkInsert(requestId);
}
0
あなたが同期メソッドがであなたのUIを変更することになっている場合は、あなたが期待するものではありません結果を得るかもしれないことに留意すべきです何らかの形で。
UIがバインドするデータのプロパティを変更するには、メインUIのスレッドコンテキスト内でトリガが発生する必要があります。
呼び出し元の同期メソッドでこれを必要とする場合でも、メソッドを呼び出すことはできますが、適切なスレッドから呼び出されるようにするには余分なコードが必要です。
Application.Current.Dispatcher.Invoke(() =>
{
BulkInsert(requestId);
//More UI sync calls here...
});
これにより、非同期スレッドから同期的に呼び出しが行われ、同時にメインスレッドでも実行されます。ある時点でメインスレッドで呼び出しが発生する必要があり、待機したくない場合は、代わりにInvokeAsyncを呼び出すことができます。
関連する問題
- 1. 非同期メソッドから同期メソッドを呼び出す
- 2. 非同期メソッド呼び出しのテスト
- 3. 非同期コードから非同期メソッドを呼び出す
- 4. 非同期メソッドから非同期メソッドを呼び出す方法
- 5. 非同期メソッドと同期メソッドを連続して呼び出します
- 6. 別のメソッドから非同期メソッドを呼び出す方法
- 7. 非同期メソッドが呼び出された同期メソッドを待機します
- 8. 非同期メソッドで非同期呼び出しスタック
- 9. Microsoft.Azure.NotificationHub - 同期メソッドの非同期呼び出し
- 10. 非同期に同期メソッドを呼び出す
- 11. UIスレッドで同期メソッドを非同期で呼び出す
- 12. Invokeメソッドの呼び出しは非同期ですか?
- 13. 非同期メソッド(Web呼び出しを行う)を非同期にラップする
- 14. CefSharpのJSから非同期メソッドを呼び出す
- 15. Dartのコンポーネントコンストラクタから非同期メソッドを呼び出す
- 16. C#非同期呼び出しメソッド定期的に
- 17. 非同期メソッドを使用してXigniteを呼び出す
- 18. Session_Startから非同期メソッドを呼び出す
- 19. ViewModelから非同期メソッドを呼び出す
- 20. ElapsedEventHandler内から非同期メソッドを呼び出す方法
- 21. メソッド呼び出しを非同期化する方法
- 22. メソッドが非同期呼び出しの結果を待つ
- 23. 同じオブジェクトの同期メソッドから同期メソッドを呼び出す
- 24. 非同期非同期/待機メソッドを再帰的に呼び出す
- 25. ASP.NET Webフォーム - 非同期的にWCF非同期メソッドを呼び出す方法
- 26. 同期UIスレッドからのコールバックで非同期メソッドを呼び出す
- 27. 別の非同期 `each`メソッド(NodeJS)の内部で非同期メソッド呼び出しを行う方法は?
- 28. 非同期メソッドの呼び出し - シーケンスの維持
- 29. 別のトランザクションメソッドを呼び出す非同期メソッドのロールバック
- 30. 別のメソッドを呼び出すサブリストのタスク/非同期ラムダ
はい、非同期メソッド内で同期メソッドを呼び出すことができます。 –
はい、 'async'メソッドで同期コードを使用できます。 –