我在button_click事件中做循环了,循环里的事就是从串口读数据,然后在textbox里显示出来。
在循环里用了这个语句:System.Threading.Thread.Sleep(2000),实现每两秒循环一次。那么我想textbox中的值的变化应该能看的很清楚,可是这样一来,每次点button的时候程序就死了。大家告诉我怎么才能做循环,是不是因为textbox的值只会在button_click事件结束之后才能显示。而我的button_click事件里的一部分程序一直在循环,程序就死了?
在循环里用了这个语句:System.Threading.Thread.Sleep(2000),实现每两秒循环一次。那么我想textbox中的值的变化应该能看的很清楚,可是这样一来,每次点button的时候程序就死了。大家告诉我怎么才能做循环,是不是因为textbox的值只会在button_click事件结束之后才能显示。而我的button_click事件里的一部分程序一直在循环,程序就死了?
把这个事件封装成一个方法
使用Click是调用个线程去执行这个方法
{
while(true)
{
Method();
}
}
private void button_click(object sender,eventargs e)
{
Thead thead = new Thead(new ThreadStart(acceptString))
thead.start();
}//定义委托
delegate void Change(string msg);
/// <summary>
/// 改变TextBox内容
/// </summary>
/// <param name="msg">信息</param>
public void changeText(string msg)
{
this.textBox.AppendText(Environment.NewLine + msg);
} /// <summary>
/// 显示接收到的内容
/// </summary>
void acceptString()
{
while (true)
{
string msg = datetime.now.tostring();
if (string.IsNullOrEmpty(msg) == false)
{
//在TextBox中显示接收到的内容
//由于不能在非主线程中更改TextBox内容,所以在此处用委托实现
this.Invoke(new Change(changeText), msg);
}
thead.sleep(2000);
}
}