Thread.Sleep()没有冻结UI

use*_*047 4 c# thread-sleep

首先,我是初学者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及更高版本中受支持.

.