For the purposes of comparison, imho just compare the keys. If you're only interested in comparing dictionary1 to dictionary2, you could do something like...
- List<object> newItems = new List<object>();
-
foreach (object key in dictionary2.keys)
-
{
-
if (!dictionary1.ContainsKey(key)
-
newItems.Add(key);
-
}
That should populate newItems with all the keys that dictionary2 has but dictionary1 doesn't have. You might have to do another pass if you also want the items that dictionary1 has but dictionary2 doesn't have.
Also this is comparing keys, as a Dictionary object is essentially a list of KeyValuePair objects. If you wanted to compare values you could change the code to do that.
As for comparing them without having an impact on the process, you'll probably want to do the compare in another thread, and make sure you use the lock statement to ensure you're not reading and writing to the dictionaries at the same time. Perhaps when you detect differences, you can trigger an event from your processing thread to your GUI thread to have your ListView update?
There are several ways you could go about this, that's just one suggestion. Hopefully it gives you some ideas :)