我有一個ListView,我用大量項目填充超過3000.這可能需要長達15秒。 每次我添加一個項目時,我想更新一個標籤,說明到目前爲止已添加了多少項目。 要做到這一點我用這個代碼:C# - 添加項目到ListView時更新標籤
foreach (FileInfo f in dir.GetFiles("*.*", SearchOption.AllDirectories))
{
DateTime dt = GetDateTakenFromImage(Path.Combine(f.Directory.ToString(), f.Name));
count++;
labelLoadedLeft.Text = "Loading " + count + " files so far";
ListViewItem lSingleItem = lv.Items.Add(f.Name);
lSingleItem.SubItems.Add(dt.ToString("dd MMMM yyyy"));
lSingleItem.Tag = Path.Combine(f.Directory.ToString(), f.Name);
}
不幸的是,標籤不顯示,直到所有的項目都被載入。
我知道這與我正在做一個冗長的操作在三個UI線程,我應該使用背景工作來做這項工作。
有沒有人知道如何使用後臺工作人員的優秀和簡單的例子。我迄今發現的對我來說太複雜或太複雜。
謝謝
Crouz
你見過這個教程嗎? HTTP://www.dotnetperls。com/backgroundworker –
除了線程之外,通過在列表視圖中調用'BeginUpdate \ EndUpdate'方法,或者使用'AddRange'一次性插入所有項目,您可以使插入操作更高效。 – Maciek
是這個WPF/WinForms? – sll