1. This point is pretty simple, there could be many cases where you are trying to access a property of a null item which is throwing the exception. For example, if MO["Whatever"] doesn't return a valid object, it returns a null. You are then trying to access the ToString() method over this object, which is actually null, so it is like null.ToString(). You cannot access any of the properties on null. Ideally you must perform checks like object temp = MO["Whatever"] if (temp != null) { processItem.SubItems.Add(temp.ToString() + " Bytes"); } Note: Null checks must be a "taken for granted" coding style. 2. I am thinking, don't clear the list. You then use listView.Contains(..) method (or a similar implementation by you) to first check if the new item is present and if it is, don't add it. Add a reference to all the current items of the list view not checked to a collection. This will be the list that got removed (if you need that) and then remove these items from the list. There will be much less confusion this way. There has to be more to life than just this -- modified at 1:01 Friday 24th February, 2006