使用任务监听并通知

时间:2014-01-17 04:09:03

标签: c# .net multithreading parallel-processing task-parallel-library

我有这样的类用于循环监听某些事情并通知订阅者一些事件。

这个类是正确的,还是有更好的实现,使用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();

我询问了在背景中通知订阅者有关某些事件的最佳方式。

1 个答案:

答案 0 :(得分:0)

这绝对是一种方法,但您也可以使用Rx库。我建议不要在你的任务中有一段时间,因为任务是要终止的。在某些时候,无论是异常还是错误。使用Task.ContinueWith方法可能是更好的选择。