WPF项目中,在viewmodel类中(非ui类),新建了一个异步调用,代码如下:
(new Action(delegate
{
try
{
MakeSunLine();
}
catch (Exception ex)
{
ex.ToString();
if (!MRedis.redisConnect(cache))
{
whileBol = false;
}
}
})).BeginInvoke(null, null);
代码的含义是异步调用一个委托,爆出如下异常:
“调用线程无法访问此对象,因为另一个线程拥有该对象。”
经过一番折腾,终于找到了解决办法,原来是调用方式出现问题,修改代码如下:
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(delegate
{
try
{
MakeSunLine();
}
catch (Exception ex)
{
ex.ToString();
if (!MRedis.redisConnect(cache))
{
whileBol = false;
}
}
}));
调用委托的方式改变为System.Windows.Application.Current.Dispatcher.BeginInvoke(委托);
不再提示异常,程序正常运行。