Ben eylem yöntemine içinde başka DİNLENME hizmetine iki web istekleri gerçekleştirmek için gerekli bir ASP.NET WebAPI denetleyicisi vardı Geçenlerde bir durum vardı. Ben HttpClient
tüm web istekleri zaman uyumsuz olmak zorunda kullanıyordum ÇünküEşzamanlı/beklemeli çağrı zincirleme nasıl çalışır?
public class FooController : ApiController
{
public IHttpActionResult Post(string value)
{
var results = PerformWebRequests();
// Do something else here...
}
private IEnumerable<string> PerformWebRequests()
{
var result1 = PerformWebRequest("service1/api/foo");
var result = PerformWebRequest("service2/api/foo");
return new string[] { result1, result2 };
}
private string PerformWebRequest(string api)
{
using (HttpClient client = new HttpClient())
{
// Call other web API and return value here...
}
}
}
: Ben işlevselliği bu örnekteki gibi biraz görünüyordu ayrı yöntemler ile tertemiz bir ayrılmış olması için kodumu yazmıştı. Daha önce hiç uyumsuz/beklemedim, bu yüzden anahtar kelimelere safça eklemeye başladım. Önce PerformWebRequest(string api)
yöntemine async
anahtar kelime eklendi ama sonra arayan PerformWebRequests()
yöntem await
kullanmak için çok async
olması gerektiğini şikayet etti. Bu yüzden async
'u yaptım ama şimdi bu yöntemin arayıcısı async
olmalıdır, vb. Bilmek istiyorum ne
her şey sadece çalışmak async
işaretlenmesi gerekir ne kadar tavşan deliğine mi? Şüphesiz, bir şeyin eşzamanlı olarak çalıştığı bir noktaya gelirdi, bu durumda nasıl güvenli bir şekilde ele alınır? Zaten kilitlenmelere neden olabileceğinden, Task.Result
numaralı telefonu aramanın kötü bir fikir olduğunu okudum.
Bunun bir çoğaltmaya hak kazanıp kazanmadığını tartışıyorum: http://stackoverflow.com/questions/9208921/async-on-main-method-of-console-app – spender
Bu harika videoyu kanalda async ile izleyebilirsiniz. - http://channel9.msdn.com/events/TechDays/Techdays-2014-the-Netherlands/Async-programming-deep-dive – terrybozzio
Bir başka mükemmel kaynak, Jon Skeet'in http: // codeblog tarafından yayınlanan blog yayınlarının Eduasync dizisidir. jonskeet.uk/category/eduasync/ – softveda