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_Loadobject sender, EventArgs e
// 控件初始化
this.txtOne.Text = "0";
this.txtSecond.Text = "0";
// 显示时间操作
Thread showTimeThread = new Threadnew ThreadStartGetTime;
showTimeThread.IsBackground = true;
showTimeThread.Start;
// 加法操作
Thread addThread = new Threadnew ThreadStartAdd;
addThread.IsBackground = true;
addThread.Start;
#region 显示时间操作
///
/// 取得实时时间
///
private void GetTime
try
while true
string currentTime = string.Format"0.1", DateTime.Now.ToLongTimeString,
DateTime.Now.Millisecond;
ShowTimecurrentTime;
Application.DoEvents;
catch Exception ex
Console.WriteLineex.Message;
// 定义显示时间操作委托,用于回调显示时间方法
delegate void ShowTimeCallBackstring str;
///
/// 实时显示时间
///
///
private void ShowTimestring str
if this.txtCurrentTime.InvokeRequired
ShowTimeCallBack showTimeCallBack = new ShowTimeCallBackShowTime;
this.InvokeshowTimeCallBack, new object[] str ;
else
this.txtCurrentTime.Text = str;
#endregion
#region 加法操作
///
/// 加法操作
///
private void Add
try
while true
int i = Convert.ToInt32this.txtOne.Text.Trim;
int j = Convert.ToInt32this.txtSecond.Text.Trim;
ShowResulti + j.ToString;
Application.DoEvents;
catch Exception ex
Console.WriteLineex.Message;
// 定义加法操作委托,用于回调加法操作方法
delegate void ShowResultCallBackstring result;
///
/// 显示结果
///
///
private void ShowResultstring result
if this.txtResult.InvokeRequired
// 写法1
//ShowResultCallBack showResultCallBack = new ShowResultCallBackShowResult;
//this.InvokeshowResultCallBack, new object[] result ;
// 写法2
//使用委托来赋值
this.txtResult.Invoke
//委托方法
new ShowResultCallBackShowResult,
new object[] result ;
else
this.txtResult.Text = result;
#endregion