C语言

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

时间:2024-12-26 20:55:38 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言语如何利用子线程刷新主线程】相关文章:

利用Java终止线程的方法04-05

c语言线程终止练习示例06-03

java中如何停止线程08-14

Java多线程的线程守护例子06-08

如何使用java多线程05-04

如何创建并运行Java线程01-11

Java 如何进行线程同步05-19

java Runnable接口如何创建线程05-18

浅谈如何使用java多线程05-07