我环顾了谷歌,因为我的程序在尝试加载 gif 并同时加载用户控件时会滞后,因此我需要多线程。相反,gif 挂起,页面突然显示我的用户控件,没有任何过渡。好的程序应该如何表现,
显示 gif-->加载用户控件-->隐藏 Gif-->运行动画(一个简单的幻灯片效果)
但是由于渲染用户控件的ui元素时的滞后,程序的行为是这样的
显示 Gif --> Gif 挂起(或冻结) --> 立即显示用户控件
所以我发现了这个叫做 BackgroundWorker 的东西。听起来很棒。嗯……不完全。我试了一下并将其应用到我的代码中
BackgroundWorker worker = new BackgroundWorker();
CrowdWatch_Portrait.CrowdWatch crowder;
//The page is a frame fyi
thePage.LoadCompleted += new LoadCompletedEventHandler(thePage_LoadCompleted);
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
crowder = new CrowdWatch_Portrait.CrowdWatch();
thePage.Content = crowder;
};
worker.RunWorkerAsync();
听起来不错。跑了。失败的。它给了我这个错误
调用线程必须是 STA,因为许多 UI 组件都需要这个。
所以再次上网研究后,我找不到任何使用该类加载用户控件的场景。所以我转向社区寻求帮助....帮助?