I wonder if instead you should flag here and trigger the job as per usual in Update().  You could switch m_invalid to a 3-way enum for example.  You'll need to make sure you guard access to it in Announce ofc.

Sidenote: The NeedsRefresh() function could probably be dropped and absorbed into here, as it's all this routine is going to do.  Also, drop the debug logging once you've finished debugging :)