C# 根据自定义线程定时器 生成随机订单

时间:2024-01-17 12:54:50

这个源之于一个朋友问我的一个问题,他说他们的需求是在一天之内随机抽取数据生成订单,还不能让客户看出来。

随机生成的订单还分概率抽取不一定的状态值,那么根据我之前写的定时器线程执行器,我们设计需要一个定时器去执行。

那么我们的定时器坑定需要一直运行,包括每天的情况。

创建 SecondsTimerTask 由于是测试条件下,我们声明5秒运行一次

 /// <summary>
     /// 每秒执行的任务
     /// </summary>
     public class SecondsTimerTask : TimerTaskBase
     {
         /// <summary>
         /// 定义一秒执行一次的
         /// </summary>
         public SecondsTimerTask()
             : , , false)
         {

         }

         List<, , , ,  };
         List<, , , ,  };

         string _ActionDay = string.Empty;
         ;

         public override void Run()
         {
             string day = DateTime.Now.ToString("yyyy/MM/dd");
             if (!day.Equals(_ActionDay))
             {
                 //如果是非本日情况,重置条件
                 //可以根据自身的条件完成
                 ints1 = , , , ,  };
                 ints2 = , , , ,  };
                 _ActionDay = day;
                 _ActionCount = ;
             }
             )
             {
                 Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "随机生成订单 今日任务完成");
                 return;
             }
             , );//用0到10万为随机界限标准
             )//70%的概率这次执行需要生产订单
             {
                 _ActionCount++;
                 , );//用0到10万为随机界限标准
                 )
                 {
                     //60%的概率
                     , ints1.Count);
                     int item = ints1[index];
                     Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "随机生成订单60%的概率: " + item);
                     ints1.RemoveAt(index);
                 }
                 else
                 {
                     ///40%的概率
                     , ints2.Count);
                     int item = ints2[index];
                     Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "随机生成订单40%的概率: " + item);
                     ints2.RemoveAt(index);
                 }
             }
             else
             {
                 Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + " 根据随机情况不生成订单");
             }
         }
     }

请结合定时器线程章节,

     class Program
     {

         static void Main(string[] args)
         {
             TimerThread timerThread = new TimerThread();
             timerThread.AddTask(new SecondsTimerTask());
             Console.ReadLine();
         }
     }

我们来看看结果

C# 根据自定义线程定时器 生成随机订单

上面的运行结果,大家注意时间,我是在今日任务完成的情况下,我直接修改系统时间为第二天,然后继续第二天的任务

这样就保证了程序如果一直在运行的情况下,完成每日的生成订单的量。

但是需要注意的是,我没有考虑如果程序重启的情况,需要各位根据各自的情况进行修改~!