Max*_*Max 97 .net c# windows-store windows-store-apps
.NET for Windows Store应用程序似乎不支持Thread.Sleep.
例如,这个
System.Threading.Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)
将在针对任何.NET Framework(2.0,3.5,4.0,4.5)进行编译时进行编译,但在针对Windows应用商店应用程序(或者同时针对4.5和存储的可移植类库)中进行编译时不会编译.
System.Threading.Thread仍然存在,它只是没有Sleep方法.
我需要在我的应用程序中延迟几秒钟,是否有合适的替代品?
编辑为什么需要延迟:我的应用程序是一个游戏,延迟是让它看起来像计算机对手正在"思考"他的下一步行动.该方法已被异步调用(主线程未被阻止),我只想减慢响应时间.
Jon*_*eet 202
Windows应用商店应用程序包含异步 - 并提供"异步暂停" Task.Delay.所以在异步方法中,你会写:
await Task.Delay(TimeSpan.FromSeconds(30));
Run Code Online (Sandbox Code Playgroud)
......或者你想要的任何延迟.异步方法将在30秒后继续,但线程不会被阻塞,就像所有await表达式一样.
Joh*_*ger 19
我遇到了同样的问题,并找到了另一个我想与你分享的有趣解决方案.如果你真的想要阻止线程,我会这样做(感谢@Brannon的"苗条"提示):
// `waitHandle.Set` is never called, so we wait always until the timeout occurs
using (var waitHandle = new ManualResetEventSlim(initialState: false))
{
waitHandle.Wait(TimeSpan.FromSeconds(5));
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*uer 11
MainPage.xaml.cs中
public MainPage()
{
this.InitializeComponent();
this.WaitForFiveSeconds();
}
private async void WaitForFiveSeconds()
{
await System.Threading.Tasks.Task.Delay(TimeSpan.FromSeconds(5));
// do something after 5 seconds!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
76203 次 |
| 最近记录: |