ini adalah lanjutan dari pertanyaan sebelumnya yang saya posting Memanggil metode async menggunakan Task.Run sepertinya salah?
Saya pikir kode yang ditulis oleh kontraktor salah tetapi mengikuti jawaban yang diberikan, saya sekarang bertanya-tanya apakah itu kesalahan perpustakaan. Perpustakaan ini memaparkan dua metode yang perlu saya gunakan. Yang satu mengembalikan "templat" dan yang lain menggunakan sebagian dari templat ini (tetap demikian dalam implementasi saya). Namun keduanya adalah metode async
yang mengembalikan Tasks
.
Untuk menjelaskan perpustakaan saya memiliki metode:
public Task<TemplateInfo> TemplateInfo(TemplateInfoRequest request);
public Task<List<EmailResult>> SendMessageTemplate(SendMessageTemplateRequest request);
Saya perlu menyebutnya sebagai berikut:
public bool SendMessage()
{
var template = TemplateInfo(...);
var message = //use template to create message
var sendResponse = SendMessageTemplate(message);
return sendResponse.Count > 0;
}
Jadi panggilan kedua bergantung pada panggilan pertama. Di sinilah async tidak masuk akal bagi saya. Saya tidak bisa dan tidak ingin menjalankannya secara paralel. Saya ingin menjalankannya secara berurutan. Saya ingin metode saya sinkron.
jawaban di pertanyaan saya sebelumnya juga menyatakan:
Karena Anda memblokir metode asinkron (yang tidak boleh Anda lakukan), ada kemungkinan Anda akan menemui jalan buntu.
Jadi bagaimana cara mengakses metode async
ini sedemikian rupa sehingga diproses secara bergantian dan mengembalikan hasil yang sinkron tetapi tidak menyebabkan kebuntuan?