0
tpide1=new Thread(new ThreadStart(pide1));
        tjunta=new Thread(new ThreadStart(junta));
public void pide1() 
    {
        while (cuadroactual1 < cuadrofinal) 
        {
            if (cuadroactual3 == cuadroactual1 )
            {
                lector.lee1(cuadroactual1);
                cuadroactual1++;
                reproductorlisto1.Set();
            }
        }
    }


    public void junta() 
    {

        while (cuadroactual3 < cuadrofinal)
        {
            AutoResetEvent.WaitAll(estanlistos);

                lector.junta(cuadroactual3);
                canvasjuntar.Dispatcher.Invoke((Action)(() => {  canvasjuntar.Background = new ImageBrush(lector.BMS); }));
                cuadroactual3++;
            }

    }

プログラムを実行すると、InvalidOperationException(「別のスレッドがオブジェクトを所有しているため、呼び出し元のスレッドはこのオブジェクトにアクセスできません」)がスローされます。これは、プログラムを実行するたびに異なる行で発生し、間違いがどこにあるかを確認できません(「ソースなし利用可能」)。(例外は、メソッド「junta()」内でデバッグしているときに常に表示されますが、常に同じ行にあるとは限りません)助けてください!

4

1 に答える 1

0

指定しなかったので、wpf を使用していると仮定しています。

メイン UI スレッドからのみ DependencyProperties にアクセスできます。おそらく起こっていることは、変数、、、、または複数がDependencyPropertiescuadroactual1として宣言されていて、スレッドの 1 つがそれらにアクセスしようとすると例外がスローされることです。cuadroactual3cuadrofinallectorreproductorlisto1

于 2012-06-16T07:14:34.993 に答える