首先,我是初学者C#,我想做到这一点:
class2.method_79(null, RoomItem_0, num, num2, 0, false, true, true);
System.Threading.Thread.Sleep(250);
class2.method_79(null, RoomItem_0, num, num4, 0, false, true, true);
System.Threading.Thread.Sleep(300);
class2.method_79(null, RoomItem_0, num, num6, 0, false, true, true);
Run Code Online (Sandbox Code Playgroud)
但是这个解决方案会冻结用户界面,我怎样才能让第二个事件在第一个事件发生后250毫秒而不冻结用户界面?
Ste*_*lla 14
在不冻结UI线程的情况下使用sleep的最简单方法是使方法异步.要使方法异步,请添加async修饰符.
private void someMethod()
Run Code Online (Sandbox Code Playgroud)
至
private async void someMethod()
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用await运算符来执行异步任务.
await Task.Delay(milliseconds);
Run Code Online (Sandbox Code Playgroud)
这使它成为一个异步方法,并将从您的UI线程异步运行.
请注意,这仅在Microsoft .NET framework 4.5及更高版本中受支持.
.