4
วิธีปฏิบัติที่ดีที่สุดในการโทร ConfigureAwait สำหรับรหัสฝั่งเซิร์ฟเวอร์ทั้งหมด
เมื่อคุณมีรหัสฝั่งเซิร์ฟเวอร์ (เช่นบางส่วนApiController) และฟังก์ชั่นของคุณจะไม่ตรงกัน - เพื่อให้พวกเขากลับมาTask<SomeObject>- มันถือว่าเป็นวิธีที่ดีที่สุดว่าเวลาที่คุณรอคอยฟังก์ชั่นที่คุณโทรหาConfigureAwait(false)? ฉันได้อ่านว่ามันมีประสิทธิภาพมากกว่าเพราะไม่ต้องสลับบริบทของเธรดกลับไปเป็นบริบทของเธรดดั้งเดิม อย่างไรก็ตามด้วย ASP.NET Web Api หากคำขอของคุณเข้ามาในเธรดเดียวและคุณรอฟังก์ชั่นและการโทรConfigureAwait(false)ที่อาจทำให้คุณอยู่ในเธรดอื่นเมื่อคุณส่งคืนผลลัพธ์สุดท้ายของApiControllerฟังก์ชัน ฉันได้พิมพ์ตัวอย่างของสิ่งที่ฉันพูดถึงด้านล่าง: public class CustomerController : ApiController { public async Task<Customer> Get(int id) { // you are on a particular thread here var customer = await SomeAsyncFunctionThatGetsCustomer(id).ConfigureAwait(false); // now you are on a different thread! will that cause problems? …