zoukankan      html  css  js  c++  java
  • 自定义队列任务执行器

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading;
     6 using System.Threading.Tasks;
     7 
     8 namespace study01
     9 {
    10     /*
    11      * 用法:
    12       BackTaskListRun.AddFunc(delegate
    13                 {
    14                     Console.WriteLine("run:"+i);
    15                 },null);
    16      */
    17     /// <summary>
    18     /// 后台执行队列
    19     /// </summary>
    20     public class BackTaskListRun
    21     {
    22         private static Thread th = null;
    23 
    24         private class TaskEntity
    25         {
    26             public TaskEntity(Action<object> func, object data)
    27             {
    28                 this.Function = func;
    29                 this.Data = data;
    30             }
    31 
    32             public Action<object> Function;
    33             public object Data;
    34         }
    35 
    36         static Queue<TaskEntity> list = new Queue<TaskEntity>();
    37         static BackTaskListRun()
    38         {
    39             if (th == null)
    40             {
    41                 th = new Thread(RunTask);
    42                 th.IsBackground = true;
    43             }
    44             if (th.ThreadState != ThreadState.Running)
    45             {
    46                 th.Start();
    47 
    48             }
    49 
    50         }
    51 
    52         static void RunTask()
    53         {
    54             while (true)
    55             {
    56                 if (list.Count == 0)
    57                 {
    58                     Thread.Sleep(1000);
    59                 }
    60                 else
    61                 {
    62                     TaskEntity entity;
    63                     lock (list)
    64                     {
    65                         entity = list.Dequeue();
    66                     }
    67                     try
    68                     {
    69                         entity.Function(entity.Data);
    70                     }
    71                     catch { }
    72 
    73                 }
    74 
    75             }
    76         }
    77         public static void AddFunc(Action<object> func, object data)
    78         {
    79             lock (list)
    80             {
    81                 list.Enqueue(new TaskEntity(func, data));
    82             }
    83         }
    84     }
    85 }
  • 相关阅读:
    mysql内置函数
    phpmyadmin 安装
    java 命令行JDBC连接Mysql
    数据库工具
    java JDBC
    mysql 各种关系代数的使用
    恢复误删的DB table数据
    eclipse php pdt插件安装
    mysql通配符使用
    关系代数和sql语句对应关系
  • 原文地址:https://www.cnblogs.com/ugvihc/p/11694996.html
Copyright © 2011-2022 走看看