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

Commit 0b6a0db

Browse files
authored
Merge branch 'master' into fixes/1517-mef-dispatcher-to-factory
2 parents 3e4f2bb + 48bfdf9 commit 0b6a0db

File tree

2 files changed

+7
-46
lines changed

2 files changed

+7
-46
lines changed

src/GitHub.Exports/Helpers/ThreadingHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public interface IAwaiter : INotifyCompletion
2424

2525
public static class ThreadingHelper
2626
{
27-
public static bool InUIThread => (!Guard.InUnitTestRunner && Application.Current.Dispatcher.CheckAccess()) || !(Guard.InUnitTestRunner);
27+
public static bool InUIThread => Guard.InUnitTestRunner ? true : Application.Current.Dispatcher.CheckAccess();
2828

2929
/// <summary>
3030
/// Gets the Dispatcher for the main thread.
@@ -88,7 +88,7 @@ public AwaiterWrapper()
8888
{
8989
isCompleted = () => true;
9090
onCompleted = c => c();
91-
getResult = () => {};
91+
getResult = () => { };
9292
}
9393

9494
public AwaiterWrapper(MainThreadAwaiter awaiter)

src/GitHub.VisualStudio/GitHubPackage.cs

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
11
using System;
2-
using System.ComponentModel.Composition;
3-
using System.Diagnostics;
42
using System.Runtime.InteropServices;
53
using System.Threading;
64
using System.Threading.Tasks;
75
using System.Windows;
86
using GitHub.Api;
97
using GitHub.Extensions;
8+
using GitHub.Helpers;
109
using GitHub.Info;
1110
using GitHub.Exports;
1211
using GitHub.Logging;
13-
using GitHub.Models;
1412
using GitHub.Services;
1513
using GitHub.ViewModels.GitHubPane;
1614
using GitHub.VisualStudio.Menus;
1715
using GitHub.VisualStudio.UI;
1816
using Microsoft.VisualStudio;
1917
using Microsoft.VisualStudio.Shell;
2018
using Microsoft.VisualStudio.Shell.Interop;
21-
using Octokit;
2219
using Serilog;
2320
using Task = System.Threading.Tasks.Task;
2421

2522
namespace GitHub.VisualStudio
2623
{
2724
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
28-
[InstalledProductRegistration("#110", "#112", System.AssemblyVersionInformation.Version, IconResourceID = 400)]
25+
[InstalledProductRegistration("#110", "#112", AssemblyVersionInformation.Version, IconResourceID = 400)]
2926
[Guid(Guids.guidGitHubPkgString)]
3027
[ProvideMenuResource("Menus.ctmenu", 1)]
3128
// Only initialize when we're in the context of a Git repository.
@@ -36,7 +33,6 @@ public class GitHubPackage : AsyncPackage
3633
{
3734
static readonly ILogger log = LogManager.ForContext<GitHubPackage>();
3835

39-
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
4036
readonly IServiceProvider serviceProvider;
4137

4238
public GitHubPackage()
@@ -77,6 +73,9 @@ async Task InitializeMenus()
7773
return;
7874
}
7975

76+
// IMenuCommandService.AddCommand uses IServiceProvider.GetService and must be called on Main thread.
77+
await ThreadingHelper.SwitchToMainThreadAsync();
78+
8079
foreach (var menu in menus.Menus)
8180
serviceProvider.AddCommandHandler(menu.Guid, menu.CmdId, (s, e) => menu.Activate());
8281

@@ -95,16 +94,6 @@ async Task EnsurePackageLoaded(Guid packageGuid)
9594
}
9695
}
9796

98-
[Export(typeof(IGitHubClient))]
99-
public class GHClient : GitHubClient
100-
{
101-
[ImportingConstructor]
102-
public GHClient(IProgram program)
103-
: base(program.ProductHeader)
104-
{
105-
}
106-
}
107-
10897
[PartCreationPolicy(CreationPolicy.Shared)]
10998
public class ServiceProviderExports
11099
{
@@ -149,35 +138,8 @@ public ServiceProviderExports([Import(typeof(SVsServiceProvider))] IServiceProvi
149138
public sealed class ServiceProviderPackage : AsyncPackage, IServiceProviderPackage, IGitHubToolWindowManager
150139
{
151140
public const string ServiceProviderPackageId = "D5CE1488-DEDE-426D-9E5B-BFCCFBE33E53";
152-
const string StartPagePreview4PackageId = "3b764d23-faf7-486f-94c7-b3accc44a70d";
153-
const string StartPagePreview5PackageId = "3b764d23-faf7-486f-94c7-b3accc44a70e";
154141
static readonly ILogger log = LogManager.ForContext<ServiceProviderPackage>();
155142

156-
Version vsversion;
157-
Version VSVersion
158-
{
159-
get
160-
{
161-
if (vsversion == null)
162-
{
163-
var asm = typeof(ITaskList).Assembly;
164-
try
165-
{
166-
// this will return Microsoft.VisualStudio.Shell.Immutable.14.0 in VS15
167-
// but Microsoft.VisualStudio.Shell.Framework in Dev15
168-
var vinfo = FileVersionInfo.GetVersionInfo(asm.Location);
169-
vsversion = new Version(vinfo.FileMajorPart, vinfo.FileMinorPart, vinfo.FileBuildPart, vinfo.FilePrivatePart);
170-
}
171-
catch
172-
{
173-
// something wrong, fallback to assembly version
174-
vsversion = asm.GetName().Version;
175-
}
176-
}
177-
return vsversion;
178-
}
179-
}
180-
181143
protected override Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
182144
{
183145
AddService(typeof(IGitHubServiceProvider), CreateService, true);
@@ -286,7 +248,6 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
286248
}
287249
else if (serviceType == typeof(IUsageTracker))
288250
{
289-
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
290251
var usageService = await GetServiceAsync(typeof(IUsageService)) as IUsageService;
291252
var serviceProvider = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
292253
return new UsageTracker(serviceProvider, usageService);

0 commit comments

Comments
 (0)