I'm not sure so quickly what is happening but it seems like a rather complicated mess. My extensions were mainly used to access a simple property without having to worry about cross-thread issues, basically it saves you having to write all the "if invoke required then invoke" code. I can imagine it will go wrong quickly if you start using it for properties returning collections and then modifying collections in a loop. I'm sure in your case it would be easier to handle the cross-threading issues as you normally would (eg, don't use my extensions but write the appropriate code) instead of trying to adjust my code to make it work in such complicated circumstances. I may be wrong though