WPF新开线程加载播放主线程的动画出错 提示调用线程无法访问此对象

愿丨安好 2014-06-11 09:43:41
最近在做一个东西,主线程要加载很多图片,于是在加载图片的时候希望有个动画反复播放,在图片加载完成之后就停止
于是写了个小测试,在xaml中写了个Storyboard,然后xaml.cs中声明了一个Storyboard的对象st,在窗口出事后的时候 初始化st,以及一个Thread的对象td,在按钮的一个点击事件中,用如下代码
private void Button_Click(object sender, RoutedEventArgs e)
{
td = new Thread(LoadAnimation);
td.Start(st);
}

private void LoadAnimation(object sender)
{
Storyboard MystoryBoard = sender as Storyboard;
MystoryBoard.Begin();
}

然后就出现了一个调用线程无法访问此对象,因为另一个线程拥有该对象的错误,请大神支招!
另外,我用st.Dispatcher.Invoke的方法也不能满足要求,在主线程加载图片的时候 会把动画卡死也没有播放。
...全文
184 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cykevin 2015-11-18
  • 打赏
  • 举报
回复
在线程中调用窗体的dispatcher貌似可以解决这个问题
愿丨安好 2014-07-02
  • 打赏
  • 举报
回复
最后还是说下自己的解决办法吧,我新做了个窗口来跑动画,然后在进程里面来创建窗口,病在需要关闭的时候调用windowsAPI的FindWIndow和 SENDMESSAGE方法来关闭制定窗口!
GrubBai 2014-06-14
  • 打赏
  • 举报
回复
线程问题,同样求解。
dianjixue1 2014-06-12
  • 打赏
  • 举报
回复
楼主搞反了,主线程播放动画,子线程加载图片。在加载图片完成后,写一个回调函数,终止动画播放。
Kation 2014-06-12
  • 打赏
  • 举报
回复
Storyboard本身就只能在主线程工作
愿丨安好 2014-06-11
  • 打赏
  • 举报
回复
人工置顶,求大神!

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧