国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 根據自定義線程定時器 生成隨機訂單

2019-11-17 02:30:56
字體:
來源:轉載
供稿:網友

C# 根據自定義線程定時器 生成隨機訂單

這個源之于一個朋友問我的一個問題,他說他們的需求是在一天之內隨機抽取數據生成訂單,還不能讓客戶看出來。

隨機生成的訂單還分概率抽取不一定的狀態值,那么根據我之前寫的定時器線程執行器,我們設計需要一個定時器去執行。

那么我們的定時器坑定需要一直運行,包括每天的情況。

創建SecondsTimerTask 由于是測試條件下,我們聲明5秒運行一次

 1 /// <summary> 2     /// 每秒執行的任務 3     /// </summary> 4     public class SecondsTimerTask : TimerTaskBase 5     { 6         /// <summary> 7         /// 定義一秒執行一次的 8         /// </summary> 9         public SecondsTimerTask()10             : base(0, 1000, false)11         {12 13         }14 15         List<int> ints1 = new List<int>() { 1, 2, 3, 4, 5 };16         List<int> ints2 = new List<int>() { 6, 7, 8, 9, 10 };17 18         string _ActionDay = string.Empty;19         int _ActionCount = 0;20 21         public override void Run()22         {23             string day = DateTime.Now.ToString("yyyy/MM/dd");24             if (!day.Equals(_ActionDay))25             {26                 //如果是非本日情況,重置條件27                 //可以根據自身的條件完成28                 ints1 = new List<int>() { 1, 2, 3, 4, 5 };29                 ints2 = new List<int>() { 6, 7, 8, 9, 10 };30                 _ActionDay = day;31                 _ActionCount = 0;32             }33             if (_ActionCount == 5)34             {35                 Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "隨機生成訂單 今日任務完成");36                 return;37             }38             int ran = new Random(DateTime.Now.Millisecond).Next(0, 100000);//用0到10萬為隨機界限標準39             if (ran < 70000)//70%的概率這次執行需要生產訂單40             {41                 _ActionCount++;42                 int ranNext = new Random(DateTime.Now.Millisecond).Next(0, 100000);//用0到10萬為隨機界限標準43                 if (ranNext > 40000)44                 {45                     //60%的概率46                     int index = new Random(DateTime.Now.Millisecond).Next(0, ints1.Count);47                     int item = ints1[index];48                     Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "隨機生成訂單60%的概率: " + item);49                     ints1.RemoveAt(index);50                 }51                 else52                 {53                     ///40%的概率54                     int index = new Random(DateTime.Now.Millisecond).Next(0, ints2.Count);55                     int item = ints2[index];56                     Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + "隨機生成訂單40%的概率: " + item);57                     ints2.RemoveAt(index);58                 }59             }60             else61             {62                 Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss:ffff: ") + " 根據隨機情況不生成訂單");63             }64         }65     }

請結合定時器線程章節,

 1     class PRogram 2     { 3  4         static void Main(string[] args) 5         { 6             TimerThread timerThread = new TimerThread(); 7             timerThread.AddTask(new SecondsTimerTask()); 8             Console.ReadLine(); 9         }10     }

我們來看看結果

上面的運行結果,大家注意時間,我是在今日任務完成的情況下,我直接修改系統時間為第二天,然后繼續第二天的任務

這樣就保證了程序如果一直在運行的情況下,完成每日的生成訂單的量。

但是需要注意的是,我沒有考慮如果程序重啟的情況,需要各位根據各自的情況進行修改~!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河曲县| 西吉县| 额敏县| 治多县| 博乐市| 枣强县| 濮阳市| 中超| 五寨县| 周至县| 沛县| 彝良县| 贡嘎县| 昭平县| 武威市| 西充县| 博爱县| 宁武县| 叙永县| 红原县| 集贤县| 新龙县| 肥乡县| 密山市| 绥棱县| 阜南县| 霍邱县| 安义县| 苍山县| 瑞安市| 洪洞县| 若尔盖县| 巩留县| 万源市| 永康市| 洛扎县| 津南区| 邵武市| 武鸣县| 曲麻莱县| 尚义县|