public static void SkyManagerUpdate2(Map __instance) { if (!skyManagerStartEvents.TryGetValue(__instance, out AutoResetEvent skyManagerStartEvent)) { skyManagerStartEvent = new AutoResetEvent(false); skyManagerStartEvents.Add(__instance, skyManagerStartEvent); new Thread(() => { AutoResetEvent skyManagerStartEvent2 = skyManagerStartEvents[__instance]; SkyManager skyManager = __instance.skyManager; while (true) { skyManagerStartEvent2.WaitOne(); skyManager.SkyManagerUpdate(); } }).Start(); } skyManagerStartEvent.Set(); }