无效的操作异常线程

时间:2012-06-16 06:24:07

标签: c#

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()”中调试时,异常总是出现,但并不总是在同一行中)请帮助我!

1 个答案:

答案 0 :(得分:0)

因为你没有指定我假设你使用wpf。

您只能从主UI线程访问DependencyProperties。可能发生的情况是,您的一个或多个变量cuadroactual1cuadroactual3cuadrofinallectorreproductorlisto1被声明为DependencyProperties并抛出异常当其中一个线程试图访问它们时。