here is a code snippet but really it's just from the ISynchronizeInvoke interface implementation:
public object Invoke(Delegate method, object[] args)
{
return method.DynamicInvoke(args);
}
public bool InvokeRequired
{
get { return true; }
}
Returning InvokeRequired as true throws the error later when Invoke is called.