for (int i = 0; i < 10; i++)
{
Thread thread = new Thread(new ThreadStart(delegate()
{
Console.WriteLine(i.ToString());
}));
thread.Start();
}
输出结果:
1
1
2
3
5
6
7
8
9
9
请给予正确的代码,谢谢
解决方案 »
- C#引用C++ Dll,问题
- 问这3个命名空间winform中无法使用,需要添加那些引用
- 怎样让session过期时自动跳转到登陆页
- C# 调用C++的dll的问题,很长时间都没有搞定
- C#中文本输入框,下拉自动提示功能如何实现?
- EXCEL默认sheet是三个,如何添加新工作表m_objSheets.Add(,,,)里面的四个参数怎么设?
- 请教一个关于winform的TREEVIEW的问题
- 从串口读取数据,把需要的数据存入数据库出错
- 怎么把网址中的 %E6 之类的编码转为 中文
- 请问struct同class的异同?
- google code svn 使用问题。最好是你自己在使用。谢谢(TortoiseSVN)
- WinExec调用Mono传参数
{
private static int Total = 10;
static void Main(string[] args)
{ for (int i = 0; i < Total; i++)
{
ThreadObj threadObj = new ThreadObj(i);
Thread thread = new Thread(new ThreadStart(threadObj.Write));
thread.Start();
} Console.Read();
}
}
public class ThreadObj
{
private int i = 0;
public ThreadObj(int i)
{
this.i = i;
}
public void Write()
{
Console.WriteLine(this.i.ToString());
}
}
{
var y = i;
Thread thread = new Thread(new ThreadStart(delegate()
{
Console.WriteLine(y.ToString());
}));
thread.Start();
}
for (int i = 0; i < 10; i++)
{
Thread thread = new Thread(new ParameterizedThreadStart(delegate(object obj)
{ Console.WriteLine(((int)obj).ToString());
}));
thread.Start(i);
}/*0
1
2
3
4
5
6
7
8
9
请按任意键继续. . .*/
{
Thread thread = new Thread(new ParameterizedThreadStart(delegate(object obj)
{ Console.WriteLine(((int)obj).ToString());
}));
thread.Start(i);
System.Threading.Thread.Sleep(0);//加个这个就好了,主线程松手,子线程才可立马启发!
//楼主,你也可以在你的代码加入这个! }
{
Thread thread = new Thread(new ParameterizedThreadStart(delegate(object obj)
{ Console.WriteLine(((int)obj).ToString());
}));
thread.Start(i);
System.Threading.Thread.Sleep(0);//加个这个就好了,主线程松手,子线程才可立马启发!
//楼主,你也可以在你的代码加入这个! }
System.Threading.Thread.Sleep(0);//0-9都是太小了,没有引起子线程触发,
大家可以跟据自已的机器不同,把参数改大改小,调到合适为止!
for (int i = 0; i < 10; i++)
{
int count = i;
Thread thread = new Thread(() => Console.WriteLine(count.ToString()));
thread.Start();
}
所以新增一个新的变量index ,把i赋值给index ,托管代码使用index 就可以了。
修改了2处,
for (int i = 0; i < 10; i++)
{
int index = i; //分配新的内存空间,以免托管代码执行i变量时i值已变化
Thread thread = new Thread(new ThreadStart(delegate()
{
Console.WriteLine(index.ToString());
}));
thread.Start();
}
成功输出
0
1
2
3
4
5
6
7
8
9
输出顺序无所谓,没有遗漏和重复。