Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit e9b501f

Browse files
committed
Pass IPackageSettings to UsageTracker ctor.
`UsageTracker` was querying `IPackageSettings` in its initialization and this was causing an occasional race condition between `AsyncPackage.AddService` and `GetService`. Instead pass the `IPackageSettings` to the `UsageTracker` constructor.
1 parent 4634099 commit e9b501f

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/GitHub.VisualStudio/GitHubPackage.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,8 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
254254
{
255255
var usageService = await GetServiceAsync(typeof(IUsageService)) as IUsageService;
256256
var serviceProvider = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
257-
return new UsageTracker(serviceProvider, usageService);
257+
var settings = await GetServiceAsync(typeof(IPackageSettings)) as IPackageSettings;
258+
return new UsageTracker(serviceProvider, usageService, settings);
258259
}
259260
else if (serviceType == typeof(IVSGitExt))
260261
{

src/GitHub.VisualStudio/Services/UsageTracker.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,15 @@ public sealed class UsageTracker : IUsageTracker, IDisposable
2828
IDisposable timer;
2929
bool firstTick = true;
3030

31-
[ImportingConstructor]
3231
public UsageTracker(
3332
IGitHubServiceProvider gitHubServiceProvider,
34-
IUsageService service)
33+
IUsageService service,
34+
IPackageSettings settings)
3535
{
3636
this.gitHubServiceProvider = gitHubServiceProvider;
3737
this.service = service;
38-
timer = StartTimer();
38+
this.userSettings = settings;
39+
timer = StartTimer();
3940
}
4041

4142
public void Dispose()
@@ -71,7 +72,6 @@ async Task Initialize()
7172

7273
client = gitHubServiceProvider.TryGetService<IMetricsService>();
7374
connectionManager = gitHubServiceProvider.GetService<IConnectionManager>();
74-
userSettings = gitHubServiceProvider.GetService<IPackageSettings>();
7575
vsservices = gitHubServiceProvider.GetService<IVSServices>();
7676
initialized = true;
7777
}

0 commit comments

Comments
 (0)