handzlikchris/FastScriptReload

ImmersiveVRTools.Common.Runtime: UnityMainThreadDispatcher can't be initialized on worker thread

mollstam opened this issue · 2 comments

Just got hit by an exception where code tried to get the .gameObject property from a worker thread. It was during SafeInvoke(HotReloadFailed, changesAwaitingHotReload); triggering ProjectWindowReloadStatusIndicatorDrawer.OnHotReloadFailed which in turn accesses UnityMainThreadDispatcher.Instance which in SingletonBase<T> will try to access stuff that should only be accessed on the main thread in case there is no singleton instance. Sorry for oral account of the callstack but my debugger got detached when I was poking around and CBA to repro. 😅

Anyway, maybe the main thread dispatcher needs to eaglery be inited from the main thread (RuntimeInitializeOnLoad?) if its means to be accessed from a worker, or just use another singleton implementation that doesn't hit Unity's API.

Thanks - that could be an option. It may be a while before I get anywhere close to that as it doesn't happen to often (I think?). Feel free to submit PR if you've got a solution in mind already