我有这样的类用于循环监听某些事情并通知订阅者一些事件。
这个类是正确的,还是有更好的实现,使用TPL?
public class Listener
{
public event EventHandler EventRaised;
private void RaiseEvent()
{
if(EventRaised!=null)EventRaised(someParam);
}
public Task Listen()
{
return Task.Factory.StartNew(
() =>
{
while(true)
{
//listen for some event
RaiseEvent();
}
}, token, TaskCreationOptions.LongRunning, TaskScheduler.Default);
}
}
实施例
var listener = new Listener();
listener.EventRaised += SomeMethod;
listerner.Listen();
我询问了在背景中通知订阅者有关某些事件的最佳方式。
答案 0 :(得分:0)
这绝对是一种方法,但您也可以使用Rx库。我建议不要在你的任务中有一段时间,因为任务是要终止的。在某些时候,无论是异常还是错误。使用Task.ContinueWith方法可能是更好的选择。