本文是.NET异步和多线程系列的第五章,本章将综合之前分享的异步和多线程来实现简单的双色球项目。
话不多说,下面我们直接进入本章主题。
首先我们来看下需求分析:
双色球:投注号码由6个红色球号码和1个蓝色球号码组成。
红色球号码:从01--33中选择,不重复。
蓝色球号码:从01--16中选择。
球号码随机的规则:远程获取一个随机数据,这个会有较长的时间损耗。
双色球项目界面设计如下:
接下来我们重点来看下代码:
模拟获取远程随机数:
using System;using System.Threading;namespace MyLottery.Common{ /// <summary> /// 解决随机数重复问题 /// 同时模拟远程请求的随机延时 /// </summary> public class RandomHelper { /// <summary> /// 随机获取数字并等待一段时间 /// </summary> public int GetRandomNumberDelay(int min, int max) { Thread.Sleep(this.GetRandomNumber(500, 1000)); //随机休息一下 return this.GetRandomNumber(min, max); } /// <summary> /// 获取随机数(解决重复问题) /// </summary> public int GetRandomNumber(int min, int max) { Guid guid = Guid.NewGuid(); //每次都是全新的ID string sGuid = guid.ToString(); int seed = DateTime.Now.Millisecond; for (int i = 0; i < sGuid.Length; i++) { switch (sGuid[i]) { case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': seed = seed + 1; break; case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': seed = seed + 2; break; case 'o': case 'p': case 'q': case 'r': case 's': case 't': seed = seed + 3; break; case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': seed = seed + 3; break; default: seed = seed + 4; break; } } Random random = new Random(seed); return random.Next(min, max); } }}
界面核心代码如下:
using System;using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;using MyLottery.Common;namespace MyLottery{ /// <summary> /// 多线程双色球项目 /// 需求: /// 双色球:投注号码由6个红色球号码和1个蓝色球号码组成。 /// 红色球号码:从01--33中选择,不重复。 /// 蓝色球号码:从01--16中选择。 /// /// 球号码随机的规则:远程获取一个随机数据,这个会有较长的时间损耗。 /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); this.btnStart.Enabled = true; this.btnStop.Enabled = false; } #region 字段和属性 #region 数据 /// <summary> /// 红球集合 其实可以写入配置文件 /// </summary> public string[] _redNums = { "01","02","03","04","05","06","07","08","09","10", "11","12","13","14","15","16","17","18","19","20", "21","22","23","24","25","26","27","28","29","30", "31","32","33" }; /// <summary> /// 蓝球集合 /// </summary> private string[] _blueNums = { "01","02","03","04","05","06","07","08","09","10", "11","12","13","14","15","16" };
没有评论:
发表评论