UI反应的后台操作

时间:2017-02-01 20:38:24

标签: c# user-interface freeze

我需要制作一个显示当前操作的排序应用程序 我已经这样做了:

我收集了int个。在其中,我有排序算法和事件'步骤'这需要两个参数'操作'例如。比较,排列等以及int[]我做过的元素。

如果排序正在对特定项目执行某些操作,我想更改ListView中的项目背景。 ' 250毫秒眨眼'这样的事情:

listView1.Items[1].BackColor = Color.LightGreen;
listView1.Items[2].BackColor = Color.LightGreen;

Thread.Sleep(250);

for (int i = 0; i < args.Length; i++)
{
    listView1.Items[i].BackColor = Color.White;
}

但是当我尝试开始排序时,用户界面就会冻结,几秒后它会显示为SortedCollection

我的问题是:
我如何展示&#39; live&#39;排序期间UI上的操作?

1 个答案:

答案 0 :(得分:0)

而不是Thread.Sleep(250)使用await Task.Delay(250)。为此,您需要将方法标记为async