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

首頁 > 編程 > C# > 正文

C#采用Winform實現類似Android的Listener

2020-01-24 02:29:41
字體:
來源:轉載
供稿:網友

本文實例講述了C#采用Winform實現類似Android下Listener的方法。非常實用的一個技巧。具體實現方法如下:

首先是一個ICallBackListener接口,里面要寫上你需要Listen的方法。
其次,是一個Controller類,類似于工作類,具體的功能可以在這里面實現。

實現代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace Listener{  /// <summary>  /// 回調接口(類似Listener)  /// </summary>  public interface ICallBackListener  {    void onCallBack();    bool onCallBack(string pWhat);  }  /// <summary>  /// 控制器類,處理事務  /// </summary>  public class Controller  {    // 執行任務的線程    private Thread mThread;    // 控制循環和控制是否處理的Flag    private bool mFlagWhile;    private bool mFlagDoWork;    // 接收訂閱Listener的回調的集合(Android中的vector)    private List<ICallBackListener> mListenerList;    public Controller()    {      // 初始化Listener集合      mListenerList = new List<ICallBackListener>();      // 初始化線程相關      mThread = new Thread(work);      mFlagWhile = true;      mFlagDoWork = true;    }    /// <summary>    /// 具體執行的工作    /// </summary>    private void work()    {      while (mFlagWhile)      {        Thread.Sleep(3000);        if (mFlagDoWork)        {          // 執行相應的處理          // 具體處理的工作就在這里          ActiveOnCallBack();        }        Thread.Sleep(3000);        if (mFlagDoWork)        {          // 執行相應的處理          // 具體處理的工作就在這里          ActiveOnCallBack("Test");        }      }    }    /// <summary>    /// 啟動Controller處理    /// </summary>    public void Start()    {      if (mFlagWhile)        mThread.Start();    }    /// <summary>    /// 關閉Controller處理    /// </summary>    public void Stop()    {      mFlagWhile = false;      mFlagDoWork = false;      mThread.Abort();    }    /// <summary>    /// 激活onCallBack()    /// </summary>    private void ActiveOnCallBack()    {      if(mListenerList!=null)        foreach (ICallBackListener tCallBack in mListenerList)        {          tCallBack.onCallBack();        }    }    /// <summary>    /// 激活onCallBack(string)    /// </summary>    /// <param name="pWhat">傳入的參數</param>    private void ActiveOnCallBack(string pWhat)    {      if (mListenerList != null)        foreach (ICallBackListener tCallBack in mListenerList)        {          tCallBack.onCallBack(pWhat);        }    }    /// <summary>    /// 設置Listener    /// </summary>    /// <param name="pCallBackListener">繼承ICallbackListener接口的類</param>    public void setOnListener(ICallBackListener pCallBackListener)    {      if (pCallBackListener != null)        mListenerList.Add(pCallBackListener);    }    /// <summary>    /// 移除Listener    /// </summary>    /// <param name="pCallBackListener">繼承ICallbackListener接口的類</param>    public void removeOnListener(ICallBackListener pCallBackListener)    {      if (pCallBackListener != null)        mListenerList.Remove(pCallBackListener);    }  }}

接著就是如何使用這個類了,簡單的創建一個Winform,一個Button用來停止,一個TextBox用來打印。
具體的用法里面都有注釋!便于大家理解。

代碼如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Listener;namespace EventTest{  // Form一定要繼承ICallBackListener并實現其方法  public partial class FormTest : Form, ICallBackListener  {    // UI更新委托    private delegate void DelegateTextBox(string pString);    // 控制器    private Controller mController;    public FormTest()    {      InitializeComponent();    }    private void Form1_Load(object sender, EventArgs e)    {      // 初始化控制器,設置偵聽,并開始      mController = new Controller();      mController.setOnListener(this);      mController.Start();    }    // Override 接口實現    public void onCallBack()    {      // 線程安全處理      if (InvokeRequired)      {        textBox1.Invoke(new DelegateTextBox(pushTextInTextbox), new object[] { null });      }    }    // Override 接口實現    public bool onCallBack(string pWhat)    {      // 線程安全處理      if (InvokeRequired)      {        textBox1.Invoke(new DelegateTextBox(pushTextInTextbox), new object[] { pWhat });      }      return false;    }    private void button1_Click(object sender, EventArgs e)    {      // 停止控制器      mController.Stop();    }    /// <summary>    /// 接收委托的方法,該方法通過Invoke控制UI    /// </summary>    /// <param name="pText">傳入的string參數</param>    private void pushTextInTextbox(string pText)    {      if (pText != null)      {        textBox1.Text += "/n當前的處理:" + pText;      }      else      {        textBox1.Text += "/n空消息!";      }    }    private void Form1_FormClosing(object sender, FormClosingEventArgs e)    {      mController.Stop();    }  }}

希望本文所述實例對大家C#程序設計有一定的幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产午夜精品理论片a级探花| 亚洲国产欧美精品| 亚洲xxxxx性| 久久精品国产v日韩v亚洲| 欧美日韩一区二区三区| 亚洲成色www8888| 欧美视频二区36p| 欧美激情第一页xxx| 国产精品1234| 久久天天躁狠狠躁老女人| 日韩精品视频免费专区在线播放| 精品一区精品二区| 国产午夜精品久久久| 精品偷拍各种wc美女嘘嘘| 日韩精品视频三区| 色综久久综合桃花网| 最好看的2019的中文字幕视频| 国产专区精品视频| 高清一区二区三区四区五区| 欧美情侣性视频| 一区二区在线视频播放| 国产成人精品日本亚洲| 国产精品扒开腿做爽爽爽男男| 欧美激情视频免费观看| 国产成人一区二区在线| 中文字幕日韩视频| 色综合久久久888| 国产精品啪视频| 日韩电影网在线| 亚洲xxxxx电影| 中文字幕成人精品久久不卡| 欧美xxxx18性欧美| 永久免费看mv网站入口亚洲| 亚洲欧美日韩久久久久久| 26uuu另类亚洲欧美日本一| xvideos国产精品| 国外成人性视频| 欧美在线视频一区| 亚洲深夜福利网站| 久久艹在线视频| 国产乱肥老妇国产一区二| 日本免费一区二区三区视频观看| 国产不卡av在线免费观看| 亚洲精品成人久久电影| 在线成人激情黄色| 日本一区二区在线播放| 一区二区国产精品视频| 国产精品极品在线| 欧美精品videossex88| 国产91露脸中文字幕在线| 爱福利视频一区| 北条麻妃久久精品| 亚洲热线99精品视频| 欧美韩日一区二区| 亚洲人成绝费网站色www| 国产精品日韩久久久久| 国产精品久久久久久久av大片| 欧美精品一区二区免费| 久久亚洲私人国产精品va| 亚洲精品999| 午夜精品蜜臀一区二区三区免费| 亚洲天堂网在线观看| 在线成人免费网站| 疯狂做受xxxx高潮欧美日本| 日韩成人在线电影网| 国产欧美日韩精品在线观看| 亚洲激情免费观看| 久久久久成人精品| 久久福利视频网| 在线午夜精品自拍| 日韩一区视频在线| 成人美女av在线直播| 在线观看日韩www视频免费| 欧美激情亚洲精品| 日韩精品一二三四区| 欧美亚洲在线播放| 国产精品久在线观看| 亚洲国产成人久久综合| 91在线视频一区| 国产精品男人爽免费视频1| 亚洲电影在线看| 欧美性xxxx极品高清hd直播| 亚洲伊人久久大香线蕉av| 97精品在线观看| 亚洲欧美激情另类校园| 亚洲美女性视频| 欧美日韩亚洲成人| 亚洲欧美国产制服动漫| 亚洲精品电影网在线观看| 色午夜这里只有精品| 日韩av男人的天堂| 狠狠色噜噜狠狠狠狠97| 91精品视频播放| 奇米成人av国产一区二区三区| 亚洲精品色婷婷福利天堂| 亚洲香蕉av在线一区二区三区| 亚洲福利在线视频| 高跟丝袜欧美一区| 91日本在线视频| 色妞色视频一区二区三区四区| 97不卡在线视频| 91高清在线免费观看| 欧美性猛交xxxx富婆弯腰| 日韩精品中文字幕视频在线| 亚洲精品电影在线观看| 亚洲国产精品久久久| 久久久精品一区二区| 色av吧综合网| 国产亚洲精品久久久久动| 羞羞色国产精品| 91亚洲va在线va天堂va国| 国产不卡精品视男人的天堂| 国产亚洲在线播放| 欧美专区第一页| 国产精品久久久久久久电影| 欧美一级淫片丝袜脚交| 91色琪琪电影亚洲精品久久| 91av在线国产| 亚洲free性xxxx护士白浆| 日韩成人在线视频观看| 欧美日韩不卡合集视频| 亚洲二区在线播放视频| 国内揄拍国内精品少妇国语| 亚洲成人aaa| 亚洲成年网站在线观看| 久久久久北条麻妃免费看| 国产精品成人v| 久久色在线播放| 国产专区精品视频| 亚洲精品综合精品自拍| 国产日韩欧美另类| 亚洲第一区中文字幕| 欧美精品久久久久久久免费观看| 日韩高清中文字幕| 在线免费观看羞羞视频一区二区| 久99九色视频在线观看| 国产91热爆ts人妖在线| 青青精品视频播放| 伊人伊成久久人综合网站| 久久偷看各类女兵18女厕嘘嘘| 精品国产乱码久久久久久天美| 国产精自产拍久久久久久蜜| 91av国产在线| 乱亲女秽乱长久久久| 日本伊人精品一区二区三区介绍| 日韩av免费网站| 在线观看久久av| 26uuu日韩精品一区二区| 91久久夜色精品国产网站| 亚洲日本aⅴ片在线观看香蕉| 91精品国产免费久久久久久| 亚洲成人黄色在线观看| 欧美激情欧美狂野欧美精品| 欧美成年人网站| 国产精品无av码在线观看| 91亚洲精品久久久久久久久久久久| 亚洲天堂av女优| 久久亚洲私人国产精品va| 在线观看91久久久久久| 欧美日韩国产综合新一区| 日韩激情视频在线| 国产精品偷伦免费视频观看的| 精品国产精品三级精品av网址| 亚洲黄色av女优在线观看|