Beispiel #1
0
        private void SolutionOrFolder_Closed(object sender, HostClosedEventArgs e)
        {
            try {
                if (projectType == ProjectType.Folder || e.ProjectType == ProjectType.Folder)
                {
                    return;
                }

                if (_state == 1)
                {
                    lock (locker) {
                        if (_state == 1)
                        {
                            using (Log.CriticalOperation($"{nameof(SolutionOrFolder_Closed)}")) {
                                // there's a bug in the MS LanguageServer code that creates
                                // an object disposed exception on the rpc object when
                                // a folder is opened after a solution (and the solutionClose triggered a StopAsync)
                                Interlocked.Exchange(ref _state, 0);
                                Log.Debug($"SetState={_state}");
                            }
                        }
                    }
                }
            }
            finally {
                projectType = ProjectType.Unknown;
            }
        }
Beispiel #2
0
        private void SolutionOrFolder_Closed(object sender, HostClosedEventArgs e)
        {
            Log.Information($"{nameof(SolutionOrFolder_Closed)}");

            var sessionService = _componentModel?.GetService <ISessionService>();

            if (sessionService == null)
            {
                Log.IsNull(nameof(sessionService));
                return;
            }

            sessionService.SolutionName = null;
            sessionService.ProjectType  = null;
        }