【发布时间】:2015-05-06 09:24:39
【问题描述】:
我正在尝试增加楼层,每次楼层的状态都应该改变并显示在楼层上,慢慢增加到所需的楼层。但是地板只是等待然后直接跳到他想要的地板而我没有看到它逐渐增加。我假设这是因为 UI 每次进入睡眠状态时都会冻结,因此我看不到逐渐增加。
那么我如何在另一个线程上执行等待(如果这甚至是问题)以阻止 UI 不冻结?
这是我的代码:
while (floor > elevator.currentFloor)
{
elevator.currentFloor++;
changeStatus(elevator);
currentFloorLbl.Text = "Current Floor: " + elevator.currentFloor;
System.Threading.Thread.Sleep(500);
}
【问题讨论】:
-
您需要在不同的线程上运行整个 while 循环,可能使用 BackgroundWorker 或 Task.Factory.StartNew(...)。
-
@failedprogramming 失败。
-
我可以举个例子吗?
-
这是一个教程,展示了使用 BackgroundWorker 更新标签 - 应该与您尝试实现的目标相似。 codeproject.com/Articles/99143/…
标签: c# multithreading loops while-loop wait