benim iplik kültürü ayarlamak için benim baz kontrolörün OnActionExecuting()
yöntemini geçersiz bir MVC uygulaması var kültürünü iş parçacığı havuzuna değiştirdiğimiz iş parçacığı döndürürsek ve kalıcı görev tamamlandığında yeni bir iş parçacığı gönderilirse kalıcı olur mu? Farkında olmalıyım?Asenkron ve iplik kültürü
cevap
önemli yakaladım await task.ConfigureAwait(false)
desen kullanıyor olabilir, hangi genellikle kilitlenmelere karşı kolay (ama yanlış) bir çözüm olarak kötüye kullanılır. Bu şekilde, devam etme, senkronizasyon bağlamı olmayan bir havuz parçasında gerçekleşir. Bu durumda, akmayacaktır, çünkü it doesn't get flowed as a part of ExecutionContext
. Daha da kötüsü, Task.Run(lambda)
kullanıyor olabilirsiniz (normalde bir ASP.NET uygulamasında olmaması gerekir). lambda
'un içindeki kod doğru CurrentCulture
'a sahip olmayacaktır.
Aksi takdirde, AspNetSynchronizationContext
, await
süreklilikleri boyunca farklı iş parçacıkları üzerinde gerçekleşse bile doğru şekilde CurrentCulture
akışını doğru şekilde akacaktır.
Uzun süre de bakabilirsiniz hayır bakın :) –
@YuvalItzchakov, gerçekten :) Yeni doğmuş bir kimse onunla daha fazla takılmam gerektiğinde ısrar ediyor SO – Noseratio
Tebrikler !! Kesinlikle bir öncelik değiştirici;) –
Kısaca, evet ASP.NET, eş zamanlı olmayan işlemleriniz boyunca kültüre benzer şeyleri SynchronizationContext
aracılığıyla aktaracak biçimde yapılandırılmıştır. Bunu MSDN'deki nasıl çalıştığı hakkında biraz okuyabilir: https://msdn.microsoft.com/en-us/magazine/gg598924.aspx
Bu SO soru üzerine okuyabilmeleri kimliklerinin belli FRİKİKLERİNDEN vardır: Using ASP.NET Web API, my ExecutionContext isn't flowing in async actions
- 1. C# ve Tarih Kültürü Sorunları
- 2. C# float.tryparse, Fransız Kültürü
- 3. DateTime.Parse: kültürü değiştirirken istisna
- 4. İPLİK ve Hadoop
- 5. iplik
- 6. RxJava: gözlemlenebilir ve varsayılan iplik
- 7. Asenkron MVVM komutları
- 8. Karışıklık iç asenkron I/O mekanizmasını
- 9. Asenkron işlevi sınama birimi
- 10. İplik nedir?
- 11. Asenkron Noktaya Yayın delegeler
- 12. Kaynak - Asenkron olay gözlemcileri
- 13. Asenkron Multithreading İstisnası İşleme?
- 14. Asp.Net Çekirdeğinde İstemci Tabanlı Kültürü Etkinleştirme
- 15. C++ atomik ve çapraz iplik görüş
- 16. Karıştırma std :: hareket() ve std :: iplik
- 17. Kulp ve iplik arasındaki fark nedir?
- 18. Qt Sinyaller ve delikli iplik güvenliği
- 19. Kod Sayfasına Dil Kültürü Nasıl Alınır?
- 20. Dünyayı bir WPF Uygulamasında Kültürü nasıl kurabilirim?
- 21. Jedis, asenkron işlemleri destekliyor mu
- 22. asenkron işlev çağrısı C++ 0x
- 23. JavaScript location.href çağrı asenkron midir?
- 24. Scala'da asenkron hesaplamalar nasıl kesilir?
- 25. İplik uygulaması uygulamayı durdurur
- 26. XCTest ile Asenkron Performans Testleri
- 27. Dalvik iplik durumları nelerdir?
- 28. Python İplik Modülü
- 29. Takviyeli İplik İptal Etme
- 30. İplik gruplarını jmeter
Bu iş parçacığı tarafından ele alınan bir sonraki istek, 'OnActionExecuting' yoluyla da bir gezi yapmaz mı? –
@ LasseV.Karlsen Her istek 'OnActionExecuting' işlevini yürütmeli, ancak her isteğin birden çok iş parçacığı tarafından sunulması mümkün değil mi? Veri erişim katmanımda veritabanıyla iletişim kurmak için eşzamansız bir model kullanıyorsam, isteğin akışı için iki ayrı ileti dizisi alamamış olabilir, kültürün değiştirildiği, diğerinin olmadığı yer olan? –
Bu mümkün görünüyor, bu konuda yeterince bilmiyorum, üzgünüm. .NET 4.5'i kullanma olasılığınız var mı? Eğer öyleyse, [CultureInfo.DefaultThreadCurrentCulture] (https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture%28v=vs.110%29.aspx) –