Dalam ASP.NET, hanya satu benang yang dapat mengendalikan satu permintaan pada masa yang sama. Walaupun ia boleh dilakukan secara selari, hanya satu benang yang mempunyai konteks permintaan. Benang ini dikawal oleh Asp.net SynchronizationContext. Apabila menunggu tugas, kaedah biasanya dipulihkan pada SynchronizationContext yang ditangkap (jika tidak ada kewujudan, ia adalah Taskscheduler). Ini selaras dengan tingkah laku yang dijangkakan operasi pengawal tak segerak.
Masalah dalam kes ujian 5
test5controller.get disebabkan oleh perintah berikut:
Panggil httpclient.getasync dalam konteks permintaan ASP.NET.
httpclient.getasync Hantar permintaan HTTP dan kembalikan tugas yang belum selesai.
Gunakan ConfigureAwait (FALSE) untuk meneruskan penjadualan di luar konteks permintaan ASP.NET.
dengan menggunakan menunggu dan bukannya getResult atau tugas.wait untuk mengelakkan tugas menyekat.
Atas ialah kandungan terperinci Kenapa panggilan httpclient.getasync saya hang semasa menggunakan menunggu/async di asp.net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!