protected override void Dispose(bool disposing) { if (!IsDisposed && _shaderHandle != -1) { Threading.BlockOnUIThread(() => { GL.DeleteShader(_shaderHandle); GraphicsExtensions.CheckGLError(); _shaderHandle = -1; }); } base.Dispose(disposing); } }