Example #1
0
        /// <summary>
        /// Handler called on the host path changed.
        /// </summary>
        /// <param name="path">The path.</param>
        void onHostPathChanged(string path)
        {
            _vs.SafeRunAction(() =>
            {
                //unload old assembly if available
                if (_hostAssembly != null)
                {
                    var unloadTransaction = _appDomain.Transactions.StartNew("Unloading host assembly");
                    try
                    {
                        if (HostAssemblyUnLoaded != null)
                        {
                            HostAssemblyUnLoaded(_hostAssembly);
                        }

                        _appDomain.Loader.UnloadRoot(_hostAssembly.FullPath);

                        _hostAssembly = null;
                    }
                    finally
                    {
                        unloadTransaction.Commit();
                    }
                }

                if (path == null)
                {
                    return;
                }

                var loadTransaction = _appDomain.Transactions.StartNew("Unloading host assembly");
                try
                {
                    //load assembly according to new path
                    _hostAssembly = _appDomain.Loader.LoadRoot(path);
                    if (_hostAssembly != null && HostAssemblyLoaded != null)
                    {
                        HostAssemblyLoaded(_hostAssembly);
                    }
                }
                finally
                {
                    loadTransaction.Commit();
                }
            }, "Changing host assembly path");
        }
Example #2
0
        /// <summary>
        /// Show composition based on analysis of given method.
        /// </summary>
        /// <param name="compositionPoint">Composition point to be analyzed.</param>
        private void showComposition(CompositionPoint compositionPoint)
        {
            _vs.SafeRunAction(() =>
            {
                if (_currentResult != null)
                {
                    //invalidate result, to free up resources
                    UserInteraction.DisposeResources();
                }

                if (compositionPoint == null)
                {
                    _guiManager.Display(null, true);
                    _currentResult = null;
                }
                else
                {
                    var watch = Stopwatch.StartNew();

                    runAnalysis(compositionPoint);
                    _vs.Log.Message("Executing composition point {0}ms", watch.ElapsedMilliseconds);

                    if (_analysisError == null)
                    {
                        watch.Restart();

                        //analysis has been successful
                        var drawing = createDrawings(_currentResult);
                        _guiManager.Display(drawing);
                        _vs.Log.Message("Drawing composition point {0}ms", watch.ElapsedMilliseconds);
                    }
                    else
                    {
                        _guiManager.DisplayEntry(_analysisError);
                    }
                }
            }, "Refreshing composition point");
        }