gpt4 book ai didi

c# - 线程携带重复的字符串对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:15 25 4
gpt4 key购买 nike

<分区>

这是我的代码。在 startLog 方法中创建的日志文件具有从 1 到 1000 的正确计数,但通过 log 方法创建的日志文件具有重复值。例如,如果重复 88,则漏掉 89,下一个打印的数字是 90。任何人都可以解释为什么会这样吗?

          namespace TestThreading
{
public partial class Form1 : Form
{
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
new Thread(startLog).Start();
}
private void startLog()
{
int i = 0;
string str;
while (i < 1000)
{
str = (++i).ToString();
logger.Trace(str);
Thread t = new Thread(() => log(new TestObject(str)));
t.Start();
}
MessageBox.Show("Done");
}
private void log(TestObject obj)
{
logger.Debug(obj.getCount());
}
}

public class TestObject
{
string count;
public TestObject(string i)
{
count = i;
}
public string getCount()
{
return count;
}
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com