なぜこれが起こるのでしょうか?
スレッドを起動すると、クラスが実行されます。
そのクラスの中には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が終了するのを待つためにスレッドを「一時停止」するにはどうすればよいですか...
そうでなければ、なぜこのスレッドがそのように動作するのかわかりませんか?