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

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

異步委托 多線程實現搖獎器 winform版

2019-11-17 01:49:15
字體:
來源:轉載
供稿:網友

異步委托 多線程實現搖獎器 winform版

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading;using System.Threading.Tasks;using System.Windows.Forms;

namespace _08_搖獎機{ //創建六個invoke方法(控件調用的時候的委托,用來給lable控件賦值) public delegate void MyDelegate1(int num); public delegate void MyDelegate2(int num); public delegate void MyDelegate3(int num); public delegate void MyDelegate4(int num); public delegate void MyDelegate5(int num); public delegate void MyDelegate6(int num); public partial class Form1 : Form { public MyDelegate1 md1; public MyDelegate1 md2; public MyDelegate1 md3; public MyDelegate1 md4; public MyDelegate1 md5; public MyDelegate1 md6; //此委托用來作異步委托,旨在讓clr自動創建另一個線程來完成主線程要做的操作,以緩解主線程的壓力 public delegate void MyDelegate(bool b); public Form1() { InitializeComponent(); md1 = SetLable1; md2 = SetLable2; md3 = SetLable3; md4 = SetLable4; md5 = SetLable5; md6 = SetLable6; } //用來存放子線程對象 PRivate Thread nameThread; private int id; private void button1_Click(object sender, EventArgs e) { MyDelegate md = new MyDelegate(this.SetNumberData);; if (button1.Text.Trim()=="開始") { button1.Text = "停止"; //調用異步委托,就是在另一個線程中執行此委托綁定的方法 IAsyncResult result = md.BeginInvoke(true,null, null); } else { button1.Text = "開始"; //停止的話就相當于終止子線程 nameThread.Abort(); } //首先要想清楚 要給主線程的空間lable賦值,那么就必須是主線程干的事 //md.EndInvoke(result); }

public void SetNumberData(bool b) { while (b==true) { List<int> listNum = new List<int>(); Random random = new Random(); //隨機生成6個數 while (listNum.Count <= 6) { int n = random.Next(0, 10); listNum.Add(n); } //不是創建此控件的線程調用此控件的時候就必須調用invoke方法 if (this.label1.InvokeRequired) { this.Invoke(md1, listNum[0]); } else { label1.Text = listNum[0].ToString(); } if (this.label2.InvokeRequired) { this.Invoke(md2, listNum[1]); } else { label2.Text = listNum[1].ToString(); } if (this.label3.InvokeRequired) { this.Invoke(md3, listNum[2]); } else { label3.Text = listNum[2].ToString(); } if (this.label4.InvokeRequired) { this.Invoke(md4, listNum[3]); } else { label4.Text = listNum[3].ToString(); } if (this.label5.InvokeRequired) { this.Invoke(md5, listNum[4]); } else { label5.Text = listNum[4].ToString(); } if (this.label6.InvokeRequired) { this.Invoke(md6, listNum[5]); } else { label6.Text = listNum[5].ToString(); } //記錄下當前的線程對象,以便于在點擊停止按鈕的時候終止此線程 nameThread = Thread.CurrentThread; Thread.Sleep(300); } //id=Thread.CurrentThread.ManagedThreadId; }

public void SetLable1(int n) { label1.Text = n.ToString(); } public void SetLable2(int n) { label2.Text = n.ToString(); } public void SetLable3(int n) { label3.Text = n.ToString(); } public void SetLable4(int n) { label4.Text = n.ToString(); } public void SetLable5(int n) { label5.Text = n.ToString(); } public void SetLable6(int n) { label6.Text = n.ToString(); } }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平塘县| 博客| 宁津县| 宁德市| 清镇市| 堆龙德庆县| 孟州市| 交城县| 万宁市| 保德县| 封开县| 汽车| 葫芦岛市| 桂平市| 岳池县| 三穗县| 阿坝县| 乐业县| 桐乡市| 阳信县| 阿荣旗| 商河县| 井陉县| 惠州市| 民乐县| 万载县| 托里县| 滨州市| 红安县| 图片| 河曲县| 梧州市| 南岸区| 瑞丽市| 方城县| 高雄县| 十堰市| 娄烦县| 陆丰市| 绵阳市| 丽水市|