Windows 8 创建背景线程单游戏

Windows 8 创建背景线程单游戏,windows-8,xna,windows-store-apps,monogame,Windows 8,Xna,Windows Store Apps,Monogame,我在monogame中为Windows8制作了一个游戏,但遇到了一个问题。我们终于得到了一个表面RT的手,但我们注意到,加载时间在这个设备上真的很长。我们看了其他几场比赛,发现这不是一个罕见的问题。为了消除用户在加载资源过程中的厌倦感,我想在屏幕上画一个加载条和一些随机事实。问题是加载资源会阻塞游戏的其余部分,并且不允许我绘制任何内容,因为它停留在初始化部分 我搜索了创建丢失线程,但发现Windows应用商店不支持,所以现在我的问题是,如何在后台加载资源,或者以其他方式不阻止整个游戏,并能够调用

我在monogame中为Windows8制作了一个游戏,但遇到了一个问题。我们终于得到了一个表面RT的手,但我们注意到,加载时间在这个设备上真的很长。我们看了其他几场比赛,发现这不是一个罕见的问题。为了消除用户在加载资源过程中的厌倦感,我想在屏幕上画一个加载条和一些随机事实。问题是加载资源会阻塞游戏的其余部分,并且不允许我绘制任何内容,因为它停留在初始化部分


我搜索了创建丢失线程,但发现Windows应用商店不支持,所以现在我的问题是,如何在后台加载资源,或者以其他方式不阻止整个游戏,并能够调用handle my Draw()函数在屏幕上绘制加载条

我做了这样的事情:

protected volatile bool contentload=false;
受保护的异步重写void LoadContent()
{
base.LoadContent();
启用=错误;
等待ThreadPool.RunAsync(新的WorkItemHandler(LoadAllContent));
}
受保护的虚LoadAllContent(Windows .Fask.Iasycaction Action)
{
If(Actudi.Stase= Windows .Fase.AcycStest.Error)
System.Diagnostics.Debug.WriteLine(action.ErrorCode);
//加载您的内容
ContentLoaded=true;
启用=真;
}
绘图方法的开头:

如果(!ContentLoaded)
{
//绘制加载屏幕
返回;
}

如果你想要一个进度条,你需要一个计数器来增加你加载的每个资源,然后在你的
Draw
中,你的条必须与该计数器相关。

由于我的状态管理,我没有让它与你的确切答案一起工作,但我可以在另一个函数中使用你说的所有内容,并将其以某种方式输入到我的代码中,现在运行良好,不会阻塞我的UI/绘图线程:D非常感谢!几个月前我也遇到过你同样的问题,所以如果这对其他人有用,我很高兴