void finder_StatusChanged(object sender, EventArgs e) { ICollection <OperationalFinder.OperationalStatus> statusCollection = finder.GetStatus(); ListViewItem[] items = new ListViewItem[statusCollection.Count]; int i = 0; foreach (OperationalFinder.OperationalStatus status in statusCollection) { ListViewItem item = new ListViewItem(); item.Name = item.Text = status.name; switch (status.responseStatus) { case OperationalFinder.ResponseStatus.Alive: item.ImageKey = "active"; break; case OperationalFinder.ResponseStatus.Down: item.ImageKey = "dead"; break; case OperationalFinder.ResponseStatus.Unknown: item.ImageKey = "unknown"; break; } item.SubItems.Add("status: " + status.responseStatus.ToString().ToLower()); items[i++] = item; } this.Invoke(new MethodInvoker(delegate() { listViewInstances.BeginUpdate(); listViewInstances.Items.Clear(); listViewInstances.Items.AddRange(items); listViewInstances.EndUpdate(); })); }