Using single-threaded apartments (the apartment model process) offers a message-based paradigm for dealing with multiple objects running concurrently . It enables you to write more efficient code by allowing a thread, while it waits for some time-consuming operation to complete, to allow another thread to be executed.