为什么会发生这种情况?
你启动一个线程,它运行一个类。
在那个类里面有一个for循环,在for循环里面有一个“写入消息框”和另一个类。
为什么我写的顺序和类(哪个先发生)会影响我的数据的准确性?
(这是线程正在运行的类内部)
int atPDFNumber= 0
foreach (var z in q)
{
atPDFNumber++;
convertToImage(z.FullName);
txtboxtest.BeginInvoke(
((Action)(() => txtboxtest.Text += atPDFNumber.ToString())));
}
该输出给了我一些重叠的值。输出是
运行 1 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14
运行 2:1 3 3 4 5 6 7 8 9 10 11 12 13 14
运行 2:1 2 3 4 5 6 7 8 9 11 11 12 13 14
在哪里以正确的顺序运行它们
foreach (var z in q)
{
atPDFNumber++;
txtboxtest.BeginInvoke(
((Action)(() => txtboxtest.Text += atPDFNumber.ToString())));
convertToImage(z.FullName);
为什么会这样?可能是我在 ConvertToImage 类中使用的外部方法也在运行一个线程。在这种情况下,我将如何“暂停”我的线程以等待 ConvertToImage 完成......
否则,我不知道为什么这个线程会这样做?