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()”中调试时,异常总是出现,但并不总是在同一行中)请帮助我!
答案 0 :(得分:0)
因为你没有指定我假设你使用wpf。
您只能从主UI线程访问DependencyProperties。可能发生的情况是,您的一个或多个变量cuadroactual1
,cuadroactual3
,cuadrofinal
,lector
或reproductorlisto1
被声明为DependencyProperties并抛出异常当其中一个线程试图访问它们时。