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()
。
上述就是C#学习教程:Thread.Sleep()没有冻结UI分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027741.html