我正在使用Xamarin跨平台为iOS和Android构建应用程序。我有一个名为“ Core”的项目,然后一个针对iOS的项目,另一个针对Android的项目。
在共享的“ Core”项目中,我想显示我制作的加载动画,同时从设备中获取当前位置。我可以获取我的locationWatcher,启动它,然后直接调用LocationWatcher.CurrentPosition,但是由于它刚刚开始监视位置更新,因此它还没有时间获取任何位置。
我的解决方案是在启动它后等待2秒钟,然后获取位置。但是,我不想异步等待,我希望在等待时锁定UI。这是因为在知道当前位置之前,用户不应该做任何事情。
我目前通过循环来实现:
DateTime startTime = DateTime.Now();
while ( (DateTime.Now() - startTime).TotalMilliseconds() < 2000) {
//Locking the UI here, but it's what I want so it's ok.
}
对于Java中只是“ Thread.sleep(2000)”的东西,这似乎是一个丑陋的“ hack”
有更好的方法吗?
Xamarin Forms的多平台方式是
await Task.Delay(ms);
编辑:
读完您确实要阻塞主线程后,这里介绍了一种多线程阻塞线程的方法:
Task.Delay(ms).Wait()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句