private void CoreRun() { if (mRebuild || mLibBuild) { mCore.Run(); mRuntime.RunCleaners(); return; } while (true) { try { mCore.Run(); } catch (MoSync.Util.ExitException e) { #if !LIB mRuntime.RunCleaners(); if (mLoadProgramStream != null) { Stream s = mLoadProgramStream; mLoadProgramStream = null; Util.RunActionOnMainThreadSync( delegate() { LoadProgram(s); }); s.Close(); continue; } else if (mLoadProgramFlag) { // reload original program mLoadProgramFlag = false; Util.RunActionOnMainThreadSync( delegate() { LoadProgram("program", "resources"); }); continue; } else { // no reload throw e; } #endif } } }