Ejemplo n.º 1
0
        void Initialize(string program, string runtime, bool forceReload)
        {
            object lastState = null;

            if (jsrt != null)
            {
                lastState = jsrt.SaveState();
                hostProjection.ReleaseEventHandlers();
                jsrt.ClearTimers();
                jsrt.ClearActive();
                jsrt = null;
            }
            lastSeenVersion = ulong.MinValue;

            jsrt = new JSRT.JScriptRuntime();
            jsrt.SetActive();
            jsrt.StartDebugging();
            // must call AddWinRTNamespace before AddHostObject
            //
            jsrt.AddWinRTNamespace("Windows");
            jsrt.AddWinRTNamespace("XSRT2");
            jsrt.AddGlobalObject("xsrt", hostProjection);
            tests.Clear(); // always clear tests, they get re-registered

            if (!PreserveStateOnReload || forceReload)
            {
                hostProjection.IsInitialized = false;
                testLogs.Clear(); // only clear logs if we want to start fresh
            }
            try
            {
                jsrt.Eval(program);
#if DEBUG
                // force active transition to make sure every survives across sessions
                jsrt.ClearActive();
                jsrt.SetActive();
#endif
                jsrt.Eval(runtime);
            }
            catch (Exception x)
            {
                jsrt.Eval(ProgramWithException(x) + "\r\n" + runtime);
            }
            bool restoreState = !forceReload && PreserveStateOnReload && lastState != null;
            if (restoreState)
            {
                jsrt.LoadState(lastState);
            }
            if (forceReload)
            {
                diff.Reset();
            }
            if (Initialized != null)
            {
                Initialized(this, new InitializedEventArgs()
                {
                    RestoredState = restoreState
                });
            }
        }
Ejemplo n.º 2
0
 public void Close()
 {
     jsrt.ClearActive();
     jsrt = null;
 }