Saya tersandung pada masalah ( https://github.com/HTBox/allReady/issues/1313 ) di GitHub di mana mereka membahas tentang ConfigureAwait(false)
mengeluarkan kode, mengklaim itu, di ASP.NET Core
panggilan ke
ConfigureAwait(false)
berlebihan dan tidak melakukan apa pun
Yang terbaik yang bisa saya temukan di sini adalah "catatan tambahan" dalam jawaban (dari Stephen Cleary, https://stackoverflow.com/a/40220190/2805831 ) yang mengatakan bahwa
ASP.NET Core tidak lagi memiliki "konteks"
Jadi, apakah ConfigureAwait(false)
benar - benar tidak diperlukan di ASP.NET Core (meskipun menggunakan .Net Framework)? Apakah ada keuntungan nyata dalam kinerja dalam beberapa kasus atau perbedaan dalam hasil / semantik?
EDIT: Apakah berbeda dalam aspek ini jika saya menghostingnya sebagai aplikasi konsol atau di IIS?
sumber
ConfigureAwait(false)
, karena perpustakaan dapat digunakan oleh aplikasi yang berbeda (ASP.NET Core, WPF, UWP, Console dll.)ConfigureAwait(false)
, meskipun relevan dalam ASP.NET classic, sama sekali tidak diperlukan . Ini tradeoff: itu agak mengurangi beberapa kebuntuan sinkronisasi-over-async (yang merupakan kelemahan desain - mereka tidak ada kecuali seseorang melakukan sesuatu yang bodoh) dan kadang-kadang memiliki ~ peningkatan kinerja mikrodetik dengan tidak memuat ulang konteks. Dengan biaya tidak dapat bergantung pada konteks, dan memilikiConfigureAwait
semua melalui kode Anda. stackoverflow.com/questions/28221508/…Jawaban:
ConfigureAwait
hanya memiliki efek pada kode yang berjalan dalam konteksSynchronizationContext
yang tidak dimiliki ASP.NET Core (ASP.NET "Legacy" tidak).Kode tujuan umum tetap harus menggunakannya karena mungkin berjalan dengan file
SynchronizationContext
.ASP.NET Core SynchronizationContext
sumber
Bagaimana dengan ini?
Saat ini (Feb-2020) Pengembang di MS Blog merekomendasikan penggunaan ConfigureAwait (false) untuk Meningkatkan kinerja, Menghindari kebuntuan. https://devblogs.microsoft.com/dotnet/configureawait-faq/
sumber