The value versus reference type distinction is something you will have to watch out for whenever you call Control.Invoke (or Control.BeginInvoke) with out or ref parameters that are value types, such as primitive types like int or bool, as well as enums and structs.