这是我的代码。在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;
}
}
}