Thread.Sleep()没有冻结UI

首先,我是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); 

但是这个解决方案会冻结用户界面,我怎样才能让第二个事件在第一个事件发生后250毫秒而不冻结用户界面?

在不冻结UI线程的情况下使用sleep的最简单方法是使方法异步。 要使方法异步,请添加async修饰符。

 private void someMethod() 

 private async void someMethod() 

现在,您可以使用await运算符来执行异步任务。

 await Task.Delay(milliseconds); 

这使它成为一个异步方法,并将从您的UI线程异步运行。

请注意,这仅在Microsoft .NET framework 4.5及更高版本中受支持。

您可以使用Dispatcher Timer来计算方法的执行时间。

当你调用时,你在UI线程中.Sleep();

这就是它冻结用户界面的原因。 如果您需要在不冻结UI的情况下执行此操作,则需要在单独的线程中运行代码。

在单独的线程上运行耗时的任务。 在UI线程上避免耗时的任务和Thread.Sleep()