zoukankan      html  css  js  c++  java
  • [C#]函数式监听器 TListener 简单例子及文档

    TListener

    This is a functional listener provider library. You can instantiate a listener and listen a function.

    这是一个函数式的监听器类库。可以通过实例化一个监听器用于监听一个函数体。

    GitHub:https://github.com/mykge/TListener

    Sample 例子

    public class Program
    {
        public static void Main(string[] args)
        {
            var lastDate = DateTime.Now;
            var listener = new TListener.Listener<string>()
                          .Listen(x => /*匿名参数是一个ListenerContext对象*/
                           {
                               return true; /*监听器将循环执行此函数,直到函数体返回true,则跳转至Success中的函数体*/
                           })
                          .Success(x =>
                           {
                               x.SyncContext /*SyncContext可以用于向主线程发送函数体*/
                                .Post(s =>
                                {
                                    Console.WriteLine(DateTime.Now.ToString()); /*Post中的操作会切换到主线程执行*/
                                }, null);
                           })
                          .Log(x => Console.WriteLine("Log - Times : " + x.Counter.Count().ToString())) /*监听函数体每次执行都将在函数最后执行Log函数体*/
                          .Exit(x => Console.WriteLine("Exit"))/*当监听器结束监听时,运行此函数体*/
                          .Interval(5000)/*监听器执行监听函数体的间隔*/
                          .Times(5, x => Console.WriteLine("Times Out"))/*监听器Success函数得次数,并在次数达到后执行函数体*/
                          .Build();/*构建监听器,在开始监听前必须先构建监听器*/
            listener.Start();/*开始监听*/
            Console.ReadKey();
        }
    }

    Api Document

    IListener

    Methods

    Listen

    IListener<TModel> Listen(Func<ListenerContext<TModel>, bool> _handler)

    设置监听操作,当函数返回true则执行Success,如果抛出异常则执行Error.

    参数

    _handler :监听函数体

    Success

    IListener<TModel> Success(Action<ListenerContext<TModel>> _handler)

    当监听函数返回true时,执行此函数体.

    参数

    _handler :函数体

    Error

    IListener<TModel> Error(Action<ListenerContext<TModel>, Exception> _handler)

    当监听函数抛出异常时,执行此函数体.

    参数

    _handler :异常处理函数体

    Log

    IListener<TModel> Log(Action<ListenerContext<TModel>> _handler)

    每当执行监听函数后,执行此函数.

    参数

    _handler :日志函数体

    Interval

    IListener<TModel> Interval(int _interval)

    当执行监听函数后,线程将挂起一段时间.

    参数

    _interval :线程挂起的时间

    Times

    IListener<TModel> Times(int times, Action<ListenerContext<TModel>>? _handler);

    设置一个值,指示Success函数执行的最大次数.

    参数

    times :Success函数执行的最大次数.

    ?_handler :当Success函数执行次数达到最大次数时,执行此函数.

    Exit

    IListener<TModel> Exit(Action<ListenerContext<TModel>> _handler)

    当监听器退出时,执行此函数体.

    参数

    _handler :函数体

    Build

    IListener<TModel> Build()

    构建监听器,必须先构建监听器才能启动.

    Start

    void Start()

    启动监听器.

    Stop

    void Stop()

    停止监听器.

    ListenerContext 监听器上下文类

    Properties 属性

    SyncContext

    SynchronizationContext SyncContext

    提供线程通信的能力。详情可以参照MSDN : SynchronizationContext Class

    IsRunning

    bool IsRunning

    获取或设置监听器的运行状态, RequestStop函数实际就是修改这个属性的值.

    TempData

    Hashtable TempData

    这个哈希表可以在一次监听过程中的不同函数体间传递数据,其生命周期会在下一次执行监听函数前被重置.

    WorkThread

    Thread WorkThread

    负责执行整个监听过程的工作线程.

    Counter

    ICounter Counter

    计数器.

    ListenerContext<>.Model

    TModel ListenerContext<TModel>.Model

    此属性只在ListenerContext的泛型类中存在,用于表示TModel的实例对象.

    Methods 方法

    RequestStop

    void RequestStop()

    修改 IsRunning 的值为 false, 并等待工作线程退出.

  • 相关阅读:
    练习题
    练习
    2.15
    数组
    java聊天工具12.4
    11.13(2)
    11.13
    10.30 作业
    10.23
    面向对象
  • 原文地址:https://www.cnblogs.com/TO-WW/p/6070438.html
Copyright © 2011-2022 走看看