Skip to content

Commit 7122104

Browse files
committed
Make package async
1 parent 186a292 commit 7122104

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

src/VsChromium/VsChromium.csproj

+5
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@
5858
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\Editor\Microsoft.VisualStudio.Language.Intellisense.dll</HintPath>
5959
</Reference>
6060
<Reference Include="Microsoft.VisualStudio.OLE.Interop" />
61+
<Reference Include="Microsoft.VisualStudio.Shell.Immutable.14.0, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
6162
<Reference Include="Microsoft.VisualStudio.Shell.Interop" />
63+
<Reference Include="Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
64+
<EmbedInteropTypes>True</EmbedInteropTypes>
65+
</Reference>
6266
<Reference Include="Microsoft.VisualStudio.Shell.Interop.8.0" />
6367
<Reference Include="Microsoft.VisualStudio.Shell.Interop.9.0" />
6468
<Reference Include="Microsoft.VisualStudio.Shell.Interop.10.0" />
@@ -77,6 +81,7 @@
7781
<Reference Include="Microsoft.VisualStudio.Shell.Immutable.12.0">
7882
<Private>False</Private>
7983
</Reference>
84+
<Reference Include="Microsoft.VisualStudio.Threading, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
8085
<Reference Include="Microsoft.VisualStudio.Utilities">
8186
<Private>False</Private>
8287
</Reference>

src/VsChromium/VsPackage.cs

+14-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
using System.ComponentModel.Design;
77
using System.Linq;
88
using System.Runtime.InteropServices;
9+
using System.Threading;
10+
using Microsoft.VisualStudio;
911
using Microsoft.VisualStudio.ComponentModelHost;
1012
using Microsoft.VisualStudio.OLE.Interop;
1113
using Microsoft.VisualStudio.Shell;
@@ -19,7 +21,7 @@
1921
using IServiceProvider = System.IServiceProvider;
2022

2123
namespace VsChromium {
22-
[PackageRegistration(UseManagedResourcesOnly = true)]
24+
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
2325
[InstalledProductRegistration("#110", "#112", VsChromium.Core.VsChromiumVersion.Product, IconResourceID = 400)]
2426
// When in development mode, update the version # below every time there is a change to the .VSCT file,
2527
// or Visual Studio won't take into account the changes (this is true with VS 2010, maybe not with
@@ -61,9 +63,9 @@ namespace VsChromium {
6163
new[] { "VS Chromium", "Chrome", "Coding Style", "Style" },
6264
SupportsProfiles = true)
6365
]
64-
[ProvideAutoLoad(UIContextGuids80.EmptySolution)]
65-
[ProvideAutoLoad(UIContextGuids80.SolutionExists)]
66-
public sealed class VsPackage : Microsoft.VisualStudio.Shell.Package, IVisualStudioPackage, IOleCommandTarget {
66+
[ProvideAutoLoad(VSConstants.UICONTEXT.EmptySolution_string, PackageAutoLoadFlags.BackgroundLoad)]
67+
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string, PackageAutoLoadFlags.BackgroundLoad)]
68+
public sealed class VsPackage : AsyncPackage, IVisualStudioPackage, IOleCommandTarget {
6769
private readonly IDisposeContainer _disposeContainer = new DisposeContainer();
6870

6971
public VsPackage() {
@@ -157,10 +159,16 @@ protected override void Dispose(bool disposing) {
157159
base.Dispose(disposing);
158160
}
159161

160-
protected override void Initialize() {
162+
protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress) {
163+
// Switches to the UI thread in order to consume some services used in command initialization
164+
await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
165+
166+
InitializeUIThread();
167+
}
168+
169+
private void InitializeUIThread() {
161170
Logger.LogInfo("{0}.Initialize()", this.GetType().FullName);
162171

163-
base.Initialize();
164172
try {
165173
PreInitialize();
166174
PostInitialize();

0 commit comments

Comments
 (0)