If you're worried about polluting your class library with references to Control, you can always use ISynchronizeInvoke instead. That's the interface that provides the Invoke method - Control implements it. Plus, if you have any other thread-sensitive systems (maybe ones communicating with legacy single-threaded code?) later on that you want to use, just implement ISychronizeInvoke and you're gold.