c#中关于线程的简单问题
单击窗体上的button1按纽,textbox1会慢慢显示指定的内容,比如for(int i=0;i<5000;i++)
textbox1.text+="a";
不用线程,显示会卡住,请问怎么用线程实现?好像还要用委托。
追问:你的代码我调试了,没有我说的效果,我把textbox2改成多行显示,就卡住了。我要的效果是字符一个个显示,而且速度可以在代码中调,好像要用线程的Sleep方法。在线等。
for(int i=0;i<5000;i++)
textbox1.text+="a";
不用线程,显示会卡住,请问怎么用线程实现?好像还要用委托。
追问:你的代码我调试了,没有我说的效果,我把textbox2改成多行显示,就卡住了。我要的效果是字符一个个显示,而且速度可以在代码中调,好像要用线程的Sleep方法。在线等。
答案:1个注意的地方,其他线程不能直接操作控件,所以要用委托
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Thread t = new Thread(TWork);
t.Start();
t.IsBackground = true;
}
public delegate void timer();
public void TWork()
{
if (this.IsHandleCreated)
{
textBox1.BeginInvoke(new timer(SetControl));
}
}
public void SetControl()
{
for (int i = 0; i < 5000; i++)
textBox1.Text += "a";
}
}
}
for(int i=0;i<5000;i++){
textbox1.text+="a";
Application.DoEvents();
}
或者用线程再调用委托
System.Threading.Thread.Sleep(5000);
TextBox1.Text = "123456";