异步调用与线程(总结篇)
2010-09-30 21:07:06 来源:WEB开发网输出结果:
main
子线程0
子线程2
子线程3
从输出结果我们 可以看到 ,新线程的执行,不会阻塞主线程。 我们可以通过 Abort()方法结束线程。这里就不给出代码了。
下面说一下,带参数的线程委托,看下面的代码:
void Add(int q)
{
for (int i = 0; i < q; i++)
{
//输出当前执行操作的线程名
Debug.WriteLine(Thread.CurrentThread.Name + i);
}
}
private void button1_Click(object sender, EventArgs e)
{
Thread.CurrentThread.Name = "main";
Thread t = new Thread(new ThreadStart(Add(100)));
t.Name = "子线程";
t.Start();
Debug.WriteLine(Thread.CurrentThread.Name);
}
//如果你像这样 Thread t = new Thread(Add(100));传入参数的话肯定是不可能的 因为委托时不能带参数的,这里提供一种简单的解决方法,就是在线程委托中再委托的办法实现
private void button1_Click(object sender, EventArgs e)
{
//添加当前主线程名称“main”
Thread.CurrentThread.Name = "main";
//在线程委托中再定义一个委托在新委托中调用方法void Add(int q)。
Thread t = new Thread(new ThreadStart(delegate { Add(1000); }));
t.Name = "子线程";
//开始新线程
t.Start();
Debug.WriteLine(Thread.CurrentThread.Name);
}
更多精彩
赞助商链接