Aşağıdaki iki kod parçası arasındaki fark nedir? İkincisini kullanırken herhangi bir sorun olacak mı?Threading ve lambda ifadeleri
Senaryo 1: Senaryo 2'de 2
private void Log(Exception e)
{
ThreadPool.QueueUserWorkItem(
(obj) =>
{
Logger.Log(e);
});
}
, ben ThreadPool'da bir Paramtre olarak istisna geçirerek değilim
private void Log(Exception e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Log), e);
}
private void Log(object obj)
{
Exception e = (Exception)obj;
Logger.Log(e);
}
Senaryo. Özel durum nesnesinin iş parçacığı sıralaması nasıl oluşur? Herhangi bir sorun olacak mı? Bunu yapmanın sınırlamaları nelerdir? Büyük avantaj, herhangi bir sayıda parametreyi çok kolay bir şekilde geçirebilmenizdir.
var mı? –
İyi cevap. Gerçekten de, lambda ifadesi bir kapanış oluşturur (http://en.wikipedia.org/wiki/Closure_(computer_science)) böylece değişken (genel durumda birden fazla olabilir) başka bir yerde referans alınabilir. – Noldorin
@anon: Hayır, bildiğim kadarıyla herhangi bir performans çıkarımı olmamalı. – Noldorin