我试了一下,感觉不到卡,如果是获取数据的代码费时间,应该不会感觉卡,因为它在子线程里。给textbobox赋值的代码无法放入子线程,这个动作可能引起卡顿,你一次赋值多长的字符串呀;以下是我的测试代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace ThreadTest { public partial class Form1 : Form { private String _text = String.Empty; public Form1() { InitializeComponent(); this.backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork); this.timer1.Interval = 200; this.timer1.Tick += new EventHandler(timer1_Tick); this.backgroundWorker1.RunWorkerAsync(); this.timer1.Start(); } void timer1_Tick(object sender, EventArgs e) { this.textBox1.Text = _text; } void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { while (true) { _text += "昊天金阙无上至尊自然妙有弥罗至真玉皇上帝\r\n"; Thread.Sleep(200); } } } }
另外,你怎么会在子线程中操作控件呢?你怎么做到的啊,我试了下报错啊,你是winform程序吗?
@会长: 委托即可实现,呵呵~用控件的BeginInvork~!
需要这么快吗 可不可以先存到缓存里面
先存到缓存里面的话就一次性把所有数据展示出来,我是想把数据一条一条逐渐展示
你不停的调用UI线程赋值当然会卡。
不会卡的啊,200毫秒应该对程序来说,时间好长的,
你是不是调用的时候,加锁了啊.?可能是加锁的时候卡在那里了,
建议你用begininvoke实现