[Discussion moved from here]
I just want to mention some comments:
Also known as an "OpenGL context", it is the glue that routes OpenGL commands to the OpenGL driver for execution. Obviously, you cannot use any OpenGL commands without a GraphicsContext.
Since context implies commands, commands may be member functions for the context object. (I am not curious about the cost for virtual function call.) This is actually default for Direct3D device class. So, several OpenGL profiles may be supported by instantiating a context for such profile (e.g. Context2_1, Context3_0 etc.). Well, with deprecated(or removed in 3.1) features, OpenGL call count is not that much as in immediate modes.(Virtual call issue was indicated when DirectX first declared its usage by COM interop, but it turned out to be good). As i have said, this is my comment for future compliant issues, but most of the users are happy with immediate modes so it will remain as intended
The GLControl provides the GLControl.BeginInvoke() method to simplify asynchronous method calls from secondary threads to the main System.Windows.Forms.Application thread. The GameWindow does not provide a similar API.
Such API can be supported by usage of System.Threading.SynchronizationContext class.(Video is talking about a .NET 4.0 feature but in the beginning gives example for a SynchronizationContext usage)