В инете есть два решения:
1. У NotifyIcon есть свойство ContextMenuStrip. Пропишите ваше меню туда, пусть меню вызывается само из NotifyIcon;
2. Если все же желаете показывать меню программно через .Show(), то делайте Invoke. Пример:
Код
niMain.MouseClick += delegate( object sender, MouseEventArgs e )
{
if ( e.Button != MouseButtons.Right )
{
niMain.GetType().InvokeMember(
"ShowContextMenu",
BindingFlags.InvokeMethod|BindingFlags.Instance|BindingFlags.NonPublic,
null,
niMain,
null
);
}
};