.NET 4.0'da, özellikle olaylardan kaçınan, potansiyel olarak çok iş parçacıklı senaryolarda yeni bir eğilim fark ettim ve bunun yerine abone yöntemleri sağladım.Abone yöntemi vs olay
Örneğin, System.Threading.Tasks.Task ve Task<TResult>
yerine Tamamlanmış veya bitirdi olayın ContinueWith() yöntemleri var. Başka bir örnek System.Threading.CancellationToken: bir CancellationRequested olayı yerine Register() yöntemine sahip.
o (olaylarla çok zarif olmaz) kolay bir iş zincirleme sağlar ve aynı zamanda (bu yolla, çünkü Task<TResult>
uygun aşırı yüklenmeleri sağlayabilir Task<TResult>
Task
devralmak izin verdiğini çünkü Task.ContinueWith() mantıksal iken
Task<TResult>
içinde bitmiş, çok güzel değil), ama bulamıyorum CancellationToken.Register() için aynı açıklama.
Peki, benzer senaryolardaki olayların dezavantajları nelerdir? Bu modeli de takip etmeli miyim? Açıklamak gerekirse, hangisini seçmeliyim? Birini diğerine ne zaman tercih etmeliyim?
public event EventHandler Finished;
// or
public IDisposable OnFinished(Action continuation)
Çok teşekkür ederim!
@Jon Skeet: Teşekkürler, melek parantezlerimin kaçmasına ihtiyacı olduğunu fark etmedim. – ShdNx
UI olayları vb UI mesaj kuyruğu kullanılarak gönderilebilir ve bir temsilci veya basit bir Görev kullanarak karşılaştırıldığında potansiyel olarak gerçekten yavaş/ağır olabilir .. – CodingBarfield
@Barfieldmv: Eylem Çağrısı Invoke/BeginInvoke ile aynı teknik kullanılarak yayınlanabilir UI iş parçacığı. Bu fark değil. –