C语言 百分网手机站

C言语如何利用子线程刷新主线程

时间:2020-09-04 18:17:53 C语言 我要投稿

C言语如何利用子线程刷新主线程

  你知道C言语如何利用子线程刷新主线程吗?使用子线程进行时间操作和加法操作,然后刷新主线程的控件显示结果。下面是小编为大家带来的关于C言语如何利用子线程刷新主线程的.知识,欢迎阅读。

  C言语如何利用子线程刷新主线程

  使用线程操作

  1、实时显示当前时间

  2、输入加数和被加数,自动出现结果

  分析:两个问题解决的方式一致,使用子线程进行时间操作和加法操作,然后刷新主线程的控件显示结果

  using System;

  using System.Threading;

  using System.Windows.Forms;

  namespace WinThread

  {

  public partial class frmMain : Form

  {

  public frmMain()

  {

  InitializeComponent();

  }

  ///

  /// 初始化

  ///

  ///

  ///

  private void frmMain_Load(object sender, EventArgs e)

  {

  // 控件初始化

  this.txtOne.Text = "0";

  this.txtSecond.Text = "0";

  // 显示时间操作

  Thread showTimeThread = new Thread(new ThreadStart(GetTime));

  showTimeThread.IsBackground = true;

  showTimeThread.Start();

  // 加法操作

  Thread addThread = new Thread(new ThreadStart(Add));

  addThread.IsBackground = true;

  addThread.Start();

  }

  #region 显示时间操作

  ///

  /// 取得实时时间

  ///

  private void GetTime()

  {

  try

  {

  while (true)

  {

  string currentTime = string.Format("{0}.{1}", DateTime.Now.ToLongTimeString(),

  DateTime.Now.Millisecond);

  ShowTime(currentTime);

  Application.DoEvents();

  }

  }

  catch (Exception ex)

  {

  Console.WriteLine(ex.Message);

  }

  }

  // 定义显示时间操作委托,用于回调显示时间方法

  delegate void ShowTimeCallBack(string str);

  ///

  /// 实时显示时间

  ///

  ///

  private void ShowTime(string str)

  {

  if (this.txtCurrentTime.InvokeRequired)

  {

  ShowTimeCallBack showTimeCallBack = new ShowTimeCallBack(ShowTime);

  this.Invoke(showTimeCallBack, new object[] { str });

  }

  else

  {

  this.txtCurrentTime.Text = str;

  }

  }

  #endregion

  #region 加法操作

  ///

  /// 加法操作

  ///

  private void Add()

  {

  try

  {

  while (true)

  {

  int i = Convert.ToInt32(this.txtOne.Text.Trim());

  int j = Convert.ToInt32(this.txtSecond.Text.Trim());

  ShowResult((i + j).ToString());

  Application.DoEvents();

  }

  }

  catch (Exception ex)

  {

  Console.WriteLine(ex.Message);

  }

  }

  // 定义加法操作委托,用于回调加法操作方法

  delegate void ShowResultCallBack(string result);

  ///

  /// 显示结果

  ///

  ///

  private void ShowResult(string result)

  {

  if (this.txtResult.InvokeRequired)

  {

  // 写法1

  //ShowResultCallBack showResultCallBack = new ShowResultCallBack(ShowResult);

  //this.Invoke(showResultCallBack, new object[] { result });

  // 写法2

  //使用委托来赋值

  this.txtResult.Invoke(

  //委托方法

  new ShowResultCallBack(ShowResult),

  new object[] { result });

  }

  else

  {

  this.txtResult.Text = result;

  }

  }

  #endregion

  }

  }


【C言语如何利用子线程刷新主线程】相关文章:

c语言线程终止练习示例11-21

浅谈如何使用java多线程12-06

java Runnable接口如何创建线程10-03

Java线程编程中的主线程详细介绍11-25

java多线程-线程通信实例详细解读11-24

JAVA多线程之线程间的通信方式解析11-25

java单线程多线程的实现与方法12-05

java多线程介绍12-07

java多线程教程11-21

Linux系统如何查看进程的线程数08-12