In a Windows Forms application I want to separate the GUI from the logic. The user requests are complex and involve communications so I don't want it to depend on the GUI thread. The structure should be something like: 

```

        GUI -----> splash screen ---------> User Form --------------> ...
              |                        #
              | create Manager thread  | Show this Form
              #                        |
    Manager -----> Check user type -------> Wait for user command --> ...

```

Which are your advices, guidelines or patterns for a design like this one? Is it the correct choice? Thank you!

**EDIT**
The Manager thread should control the GUI and not in reverse. Moreover, the Manager thread should live during all the application time.