我在子线程中调用了textBox1,我需要在主线程中定时的把它清空,可以这样写吗?我这个代码是这样的。这样可以吗?多谢老师指点。
public delegate void MyInvoke(string str);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Start();
timer2.Start();
}
public void DoWord()
{
MyInvoke mi = new MyInvoke(SetTxt);
BeginInvoke(mi, new object[] { "timer1" +" " });
}
public void DoWord2()
{
MyInvoke mi = new MyInvoke(SetTxt_2);
BeginInvoke(mi, new object[] { "Z9758" });
}
public void SetTxt(string str)
{
textBox1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") +" "+ str ;
listBox1.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+" "+str);
}
public void SetTxt_2(string str)
{
switch (str)
{ //listBox1.Items.Insert(0, list_name_file);
case "Z9758": listBox1.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 收到aa数据!"); break;
case "Z9200": listBox1.Items.Insert(0, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 收到bb数据!"); break;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 1000 * 1;
Thread thread_timer = new Thread(new ThreadStart(DoWord));
thread_timer.Start();
}
private void timer2_Tick(object sender, EventArgs e)
{
if (listBox1.Items.Count > 100)
{
listBox1.Items.Clear();
}
timer2.Interval = 1000 * 3;
Thread thread_timer3 = new Thread(new ThreadStart(DoWord2));
thread_timer3.Start();
}
你这是线程不要钱的节奏啊
有什么问题吗?
我这样写会不会在什么时候线程出现卡死的可能?
@鸽: 不需要new线程
@jello chen:那就是这样写可以哦?我程序里总共才3个线程,我用任务管理器看有7,8个线程,我这样写是不是很耗内层?
@鸽: 给你打个比方,假如你要过河,你选择了建一座桥,下次你又想从这条河通过,你没有选择从之前建的桥通过,而是又建了一座桥
@jello chen: 说的感觉就是我这个问题,那应该怎么改呢,我实在不知道怎么改,望不吝赐教,多谢!!!
@鸽: 用手机看的,不好给你改啊
@jello chen: 我不急,等您有空了帮我改改嘛,万分感谢!我qq邮箱137493520@qq.com,多谢!