【发布时间】:2020-08-11 02:33:12
【问题描述】:
目前,我的代码可以从 hololens 的本地内存中加载和渲染一个 obj 文件。但是,在此过程中,应用程序会完全暂停,这可能需要几秒钟的时间,具体取决于网格的大小和复杂性。 由于有人可能怀疑应用程序在此期间崩溃了,因此我想将渲染移至后台进程并保持主线程处于活动状态。
当前行为:
在加载和渲染 obj 文件时,应用程序会暂停几秒钟。
期望的行为:
网格的加载和渲染是在后台进程中计算的,并且应用程序保持活动状态。
代码sn-p:
public class FileExplorer: MonoBehaviour {
private FileOpenPicker openPicker;
public void OpenExplorer() {
UnityEngine.WSA.Application.InvokeOnUIThread(() = >OpenFileAsync(), false);
LoadModelFromFile();
}
private async void OpenFileAsync() {
openPicker = new FileOpenPicker();
openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
openPicker.FileTypeFilter.Add(".obj");
StorageFile file = await openPicker.PickSingleFileAsync();
if (file != null) {
path = file.Path;
}
}
public void LoadModelFromFile() {
Mesh newMesh = Instantiate(GetComponent < ObjFileLoader > ().LoadModel(path)) as Mesh;
}
}
注意事项:
- 我已经删除了我认为不必要的所有内容,如果有一些问题我可以将其添加到现有代码中
-
LoadModel(path)返回一个网格 - 我试图让它类似于异步 OpenFileAsync 函数,但这只会导致几个错误
- 我读过异步(Async and Await;Don't Block on Async Code,但不太明白
- 也许有人可以提示我,我应该使用什么值
await
如果有人遇到类似的问题并且可以帮助我解决这个问题或者可以给我一个提示,我将非常感激。
【问题讨论】:
标签: c# asynchronous uwp async-await hololens