首页 新闻 会员 周边

C#多线程调用控件的问题

0
[待解决问题]

我在子线程中调用了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();
 
        }

 

鸽的主页 | 菜鸟二级 | 园豆:202
提问于:2015-12-12 21:54
< >
分享
所有回答(1)
0

你这是线程不要钱的节奏啊

jello chen | 园豆:7336 (大侠五级) | 2015-12-12 22:04

有什么问题吗?

支持(0) 反对(0) | 园豆:202 (菜鸟二级) | 2015-12-12 22:05

我这样写会不会在什么时候线程出现卡死的可能?

支持(0) 反对(0) | 园豆:202 (菜鸟二级) | 2015-12-12 22:07

@鸽: 不需要new线程

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2015-12-12 22:19

@jello chen:那就是这样写可以哦?我程序里总共才3个线程,我用任务管理器看有7,8个线程,我这样写是不是很耗内层?

支持(0) 反对(0) | 园豆:202 (菜鸟二级) | 2015-12-12 22:21

@鸽: 给你打个比方,假如你要过河,你选择了建一座桥,下次你又想从这条河通过,你没有选择从之前建的桥通过,而是又建了一座桥

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2015-12-12 22:39

@jello chen: 说的感觉就是我这个问题,那应该怎么改呢,我实在不知道怎么改,望不吝赐教,多谢!!!

支持(0) 反对(0) | 园豆:202 (菜鸟二级) | 2015-12-12 22:42

@鸽: 用手机看的,不好给你改啊

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2015-12-12 22:49

@jello chen: 我不急,等您有空了帮我改改嘛,万分感谢!我qq邮箱137493520@qq.com,多谢!

支持(0) 反对(0) | 园豆:202 (菜鸟二级) | 2015-12-12 22:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册