public static async Task <SessionWithSolution> CreateAsync(RemoteHostClient.Connection connection, PinnedRemotableDataScope scope, CancellationToken cancellationToken) { var sessionWithSolution = new SessionWithSolution(connection, scope); try { await connection.RegisterPinnedRemotableDataScopeAsync(scope).ConfigureAwait(false); return(sessionWithSolution); } catch { sessionWithSolution.Dispose(); // we only expect this to happen on cancellation. otherwise, rethrow cancellationToken.ThrowIfCancellationRequested(); throw; } }
public static async Task <SessionWithSolution> CreateAsync(RemoteHostClient.Connection connection, PinnedRemotableDataScope scope, CancellationToken cancellationToken) { var sessionWithSolution = new SessionWithSolution(connection, scope); try { // set connection state for this session. // we might remove this in future. see https://github.com/dotnet/roslyn/issues/24836 await connection.InvokeAsync( WellKnownServiceHubServices.ServiceHubServiceBase_Initialize, new object[] { scope.SolutionInfo }, cancellationToken).ConfigureAwait(false); return(sessionWithSolution); } catch { sessionWithSolution.Dispose(); // we only expect this to happen on cancellation. otherwise, rethrow cancellationToken.ThrowIfCancellationRequested(); throw; } }