using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsApplication1.AppClass;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private delegate void FlushClient(); //代理
Thread thread = null;
int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
//this.textBox1.Clear();
button1.Enabled = false;
thread = new Thread(CrossThreadFlush);
thread.IsBackground = true;
thread.Start();
}
private void CrossThreadFlush()
{
while (true)
{
//将sleep和无限循环放在等待异步的外面
Thread.Sleep(1000);
ThreadFunction();
}
}
private void ThreadFunction()
{
if (this.textBox1.InvokeRequired)//等待异步
{
FlushClient fc = new FlushClient(ThreadFunction);
this.Invoke(fc); //通过代理调用刷新方法
}
else
{
counter += 1;
this.textBox1.Text += counter.ToString()+"\n\t";
this.textBox1.Text += System.DateTime.Now.ToString() + "\n\t";
}
}
private void button2_Click(object sender, EventArgs e)
{
thread.Suspend();
button1.Enabled = true;
}
}
}