コード例 #1
0
ファイル: RemoteProjectBuilder.cs プロジェクト: wjohnke/CSS18
 public void ReleaseReference()
 {
     lock (usageLock) {
         if (--references == 0)
         {
             if (shuttingDown)
             {
                 Dispose();
             }
             RemoteBuildEngineManager.ReleaseProjectBuilder(engine).Ignore();
         }
     }
 }
コード例 #2
0
        async void Dispose(bool releaseProjectBuilder = false)
        {
            if (!MSBuildProjectService.ShutDown && engine != null)
            {
                var currentEngine = engine;
                Task.Run(async() => {
                    try {
                        // Run this outside the usageLock to avoid a deadlock with RemoteBuildEngine's remoteProjectBuilders lock.
                        await currentEngine.UnloadProject(this, projectId).ConfigureAwait(false);
                    } catch {
                        // Ignore
                    }

                    if (releaseProjectBuilder)
                    {
                        await RemoteBuildEngineManager.ReleaseProjectBuilder(currentEngine);
                    }
                }).Ignore();
                GC.SuppressFinalize(this);
                engine = null;
            }
        }