BeginInvoke() another undocumented Security requirement
Earlier today I got myself into a little trouble, I had been calling
BeginInvoke() to act as a PostMessage() to display a new object only after its
parent had been created. When running under full trust this worked very
well, however as soon as someone (not I oops) tested in the default internet
trust - Boom a security exception. It turns out that BeginInvoke() calls
MarshaledInvoke() which eventually calls CompressedStack.GetCompressedStack()
which has a link demand for Unmanaged code. Unsurprisingly code deployed from
the internet doesn't get this permission by default.