九州体育网址备用 > 编程学习记录 > 九州体育网址备用|九州体育最新网址|九州体育app网址-足球比分投注

201511月24

九州体育网址备用|九州体育最新网址|九州体育app网址-足球比分投注

作者:admin 0 Comments 发表评论

前段时间就研究了下C#的多线程,但因为后面工作忙,就一直没有管了,昨天花了两个小时才看懂原来的源码。。。。

用我的话说,就是:“三天打鱼,三十天晒网。”

纯阳说:“网都晒烂了!”

说来惭愧啊,于是乎,今天继续研究了昨天那段有问题的多线程代码,原来有问题的代码如下:

static void Main(string[] args)
{

Thread t = new Thread(Go);   //注意:这里是实例化一个对象,只实例化了一次而已
int a=1;

while (a < 10)
{

t.Start();     //这里对已经实例化的对象多次启动,就会出问题了。
a++;

}
}

static void Go()
{

Console.WriteLine(“hello”);
// Console.ReadKey();

}

通过今天看别人的代码,搞了个吧多小时才发现原来是只实例化了一次对象,调用start之前,每个对象都要实列化。修改后的代码如下:

static void Main(string[] args)
{

int a=1;

while (a < 10)
{
Thread t = new Thread(Go);     //每次都实例化了一个对象,然后才是下一句启动对象的线程。
t.Start();
a++;

}
}

static void Go()
{

Console.WriteLine(“hello”);
// Console.ReadKey();

}

上面的才是正确的,并且每个线程的数据是互不影响的。特此记录!

补充,多线程需要传递参数可以看文章:http://blog.csdn.net/wangzh300/article/details/6969354

推荐阅读相关文章:编程学习记录

本文地址:/cxiancheng.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

本文目前尚无任何评论.

发表评论

,