亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#中事件與線程的應用

2023-05-17 11:42:00
字體:
來源:轉載
供稿:網友

我們知道,如果按鈕事件中需要啟動線程,但線程所調用的方法默認是不帶參數,不帶返回值的,如果需要調用的方法我就TNND想帶參數,帶返回值,怎么做?我寫了例子。

界面:

要實現個簡單功能,輸入數字1,數字2,當按sum按鈕時,做一個從數字1到數字2的累加,然后彈出消息框顯示最后結果。

分析:考慮到軟件實用,做累加運算應該單獨開出一個線程來做,這個程序比較簡單,但如果運算量很大,點擊按鈕時程序便會處于“假死”狀態,動不了,(跟360查惡意軟件似的),繼續分析,如果單獨開辟線程來做,那線程所調用的方法必須有兩個參數(long num1,long num2),而且需要將結果返回給主窗體以便彈出窗口顯示結果,帶參數比較好解決了,新建一個類,將兩個參數做為類成員,并且在構造函數中接收這兩個變量,但返回值要如何獲得呢?大多數人會舉一反三,參數既然可以如此,那返回值不也是一個道理么?設置第三個類成員儲存結果,運算完畢后將值賦給這個變量即可,我們這樣寫這個類:

using System;
using System.Collections.Generic;
using System.Text;


class Num
{
        private long num1=0;
        private long num2=0;
        private long totalSum=0;
        public Num(long _num1, long _num2)
        {
            num1 = _num1;
            num2 = _num2;
        }
        public void sum()
        {
            for (long i = num1; i <= num2; i++)
            {
                totalSum += i;              
                 

        }

}
主窗體的代碼我們這么寫:

public partial class Form1 : Form

{
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSum_Click(object sender, EventArgs e)
        {
            long num1 = long.Parse(txtNum1.Text);
            long num2 = long.Parse(txtNum2.Text);
            Num num = new Num(num1, num2);
            Thread thread = new Thread(new ThreadStart(num.sum));
            thread.Start();

            MessageBox.Show(num.totalSum.ToString());
        }

}

     當我們真這么做時,發現這個結果一輩子都是0,原因相信大家猜到了,當線程啟動時,代碼是會繼續運行的,所以當我們取值的時候,線程根本尚未開始運算,我們取的是變量的默認值0,怎么解決這個問題,這就用到了事件,Num類代碼改進如下:

using System;
using System.Collections.Generic;
using System.Text;

   

public delegate void delegateMe(long total);
    class Num
    {
        private long num1;
        private long num2;
        private long totalSum=0;
        public event delegateMe eventMe;
        public Num(long _num1, long _num2)
        {
            num1 = _num1;
            num2 = _num2;
        }
        public void sum()
        {
            for (long i = num1; i <= num2; i++)
            {
                totalSum += i;              
            }
            eventMe(totalSum);//觸發事件
        }
}

     這樣我們可以在for循環結束后,觸發事件,并且將結果返回,相應主窗口代碼改進如下:

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


public partial class Form1 : Form
{
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSum_Click(object sender, EventArgs e)
        {
            long num1 = long.Parse(txtNum1.Text);
            long num2 = long.Parse(txtNum2.Text);
            Num num = new Num(num1, num2);
            num.eventMe += new delegateMe(num_eventMe);
            Thread thread = new Thread(new ThreadStart(num.sum));
            thread.Start();
        }

        void num_eventMe(long total)
        {
            MessageBox.Show(total.ToString());
        }
}

     這樣一來問題就解決了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美在线字幕| 午夜精品久久久久久99热| 国产欧美精品在线| 成人伊人精品色xxxx视频| 亚洲跨种族黑人xxx| 欧美性极品xxxx做受| 国产精品黄色av| 欧美激情一区二区久久久| 国产精品国产福利国产秒拍| 欧美黑人国产人伦爽爽爽| 欧美与黑人午夜性猛交久久久| 成人av色在线观看| 日韩av片免费在线观看| 国产精品视频午夜| 92国产精品久久久久首页| 亚洲欧美激情四射在线日| 亚洲国产精品va在线看黑人动漫| 亚洲欧美日韩国产成人| 自拍偷拍亚洲在线| 亚洲国产精品字幕| 国内精品久久久久伊人av| 欧美性生活大片免费观看网址| 欧美大片欧美激情性色a∨久久| 狠狠操狠狠色综合网| 91精品国产沙发| 久久精品免费播放| 亚洲影院污污.| 亚洲精品自产拍| 国产亚洲在线播放| 久久久www成人免费精品张筱雨| 久久深夜福利免费观看| 亚洲人成在线一二| 国产欧美亚洲视频| 欧美性xxxxxxx| 亚洲国产婷婷香蕉久久久久久| 欧美性色视频在线| 亚洲乱码一区av黑人高潮| 在线观看欧美成人| 久久久久久久一区二区三区| 色综合天天综合网国产成人网| 欧美激情videoshd| 国产精品综合不卡av| 一区二区三区四区精品| 国产精品视频xxxx| 成人黄色大片在线免费观看| 亚洲第一视频在线观看| 色999日韩欧美国产| 久久夜色撩人精品| 亚洲欧美制服第一页| 国产精品中文在线| 日韩av免费在线播放| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品老牛影院在线观看| 国产成人精品视频| 最近中文字幕2019免费| 国产精品自产拍在线观看中文| 成人欧美一区二区三区黑人孕妇| 亚洲男人天堂九九视频| 亚洲精品98久久久久久中文字幕| 成人欧美一区二区三区在线湿哒哒| 欧美激情视频网站| 国产成人精品优优av| 亚洲电影免费观看高清完整版在线观看| 久久天堂电影网| 北条麻妃久久精品| 亚洲伊人成综合成人网| 亚洲最新av在线网站| 97视频网站入口| 日韩大陆欧美高清视频区| 久久久亚洲国产天美传媒修理工| 亚洲一区二区少妇| 久久久久久久久综合| 欧美成aaa人片免费看| 日韩黄在线观看| 国产精品无av码在线观看| 国产免费观看久久黄| 欧美人交a欧美精品| 欧美华人在线视频| 亚洲欧美日本精品| 成人国产精品久久久| 欧美精品久久久久久久久久| 亚洲福利在线观看| 成人国内精品久久久久一区| 北条麻妃一区二区三区中文字幕| 色偷偷888欧美精品久久久| 久热在线中文字幕色999舞| 午夜精品久久久99热福利| 久久亚洲精品网站| xxx欧美精品| 国产精品91在线观看| 国产91精品久久久| 色av吧综合网| 狠狠色狠狠色综合日日小说| 国产精品久久电影观看| 欧美午夜宅男影院在线观看| 久久久久久久影院| 欧美中文字幕在线视频| 国产精品视频中文字幕91| 久久精品国亚洲| 久久国产精品影视| 亚洲精品电影久久久| 亚洲xxxx妇黄裸体| 欧美国产激情18| 精品国模在线视频| 亚洲国产精品久久久久| 97激碰免费视频| 亚洲女人天堂色在线7777| 久久精品成人动漫| 久久成人免费视频| 亚洲精品一区二区久| 久99九色视频在线观看| 亚洲第一区在线观看| 国外日韩电影在线观看| 理论片在线不卡免费观看| 欧美诱惑福利视频| 国产精品揄拍一区二区| 欧美一区视频在线| 国产香蕉97碰碰久久人人| 成人久久久久久久| 亚洲欧美日韩精品久久奇米色影视| 色爱av美腿丝袜综合粉嫩av| 中文字幕欧美精品在线| 在线观看日韩欧美| 九九热精品视频在线播放| 国产mv免费观看入口亚洲| 亚洲天堂男人的天堂| 久久久999精品视频| 亚洲深夜福利在线| 国产精品视频自在线| 久久亚洲国产精品| 日韩在线视频线视频免费网站| 日韩av最新在线| 国产精品福利无圣光在线一区| 欧美丰满少妇xxxxx做受| 粉嫩老牛aⅴ一区二区三区| 久久综合色影院| 久久精视频免费在线久久完整在线看| 欧美激情视频一区| 日本成人免费在线| 亚洲成色999久久网站| 欧美日韩亚洲视频| 国产精品综合网站| 色偷偷888欧美精品久久久| 日韩精品亚洲元码| 欧美精品在线免费播放| 欧美亚洲另类激情另类| 日本成熟性欧美| 精品国产区一区二区三区在线观看| 在线亚洲欧美视频| 91干在线观看| 91禁外国网站| 亚洲欧美制服第一页| 中文综合在线观看| 欧美日韩xxxxx| 日韩在线视频免费观看高清中文| 亚洲欧洲成视频免费观看| 国内外成人免费激情在线视频| 国产成人精品日本亚洲| 欧美激情精品久久久久久变态| 亚洲精品网站在线播放gif| 欧美大片va欧美在线播放| 国产在线视频不卡| 国模精品视频一区二区| 久久这里有精品|