多线程

public partial class ThreadForm : Form
{
public ThreadForm()
{
InitializeComponent();
}

private void ThreadForm_Load(object sender, EventArgs e)
{
//实例化委托
updateTxt = new UpdateTxt(UpdateTxtMethod);
}

//创建一个委托,是为访问TextBox控件服务的。
public delegate void UpdateTxt(string msg);
//定义一个委托变量
public UpdateTxt updateTxt;
//修改TextBox值的方法。
public void UpdateTxtMethod(string msg)
{
txtContent.AppendText(msg + "\r\n");
txtContent.ScrollToCaret();
}

//此为在非创建线程中的调用方法,其实是使用TextBox的Invoke方法。
public void ThreadMethodTxt(int n)
{
this.BeginInvoke(updateTxt, "线程开始执行,执行" + n + "次,每一秒执行一次");
for (int i = 0; i < n; i++)
{
this.BeginInvoke(updateTxt, i.ToString());
//一秒 执行一次
Thread.Sleep(1000);
}
//this.BeginInvoke(updateTxt, "线程结束");
updateTxt("线程结束");
}

private void btnStart_Click(object sender, EventArgs e)
{
Thread objThread = new Thread(new ThreadStart(delegate
{
ThreadMethodTxt(Convert.ToInt32(txtRunCount.Text.Trim()));
}));
objThread.Start();

//StartThread();
}

/*

private Thread ThreadTxt;
private void StartThread()
{
ThreadTxt = new Thread(new ParameterizedThreadStart(WriteText));
ThreadTxt.Start(txtRunCount.Text);
if (!ThreadTxt.IsAlive)
{
ThreadTxt.Abort();
}
}

private void WriteText(object count)
{
for (int i = 0; i <Convert.ToInt32(count); i++)
{
txtContent.Text = txtContent.Text + i.ToString()+"\r";
Thread.Sleep(1000);
}
}
*/
}

posted @ 2013-10-31 20:55  一个人的风  阅读(93)  评论(0)    收藏  举报