2015-01-29 22 views
6

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ü

+0

Bu iş parçacığı tarafından ele alınan bir sonraki istek, 'OnActionExecuting' yoluyla da bir gezi yapmaz mı? –

+0

@ 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? –

+1

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) –

cevap

3

ö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.

+1

Uzun süre de bakabilirsiniz hayır bakın :) –

+0

@YuvalItzchakov, gerçekten :) Yeni doğmuş bir kimse onunla daha fazla takılmam gerektiğinde ısrar ediyor SO – Noseratio

+0

Tebrikler !! Kesinlikle bir öncelik değiştirici;) –