private static event EventHandler<PackageManagerEventArgs> s_moveEventHandler;
private static event EventHandler<PackageManagerEventArgs> s_clearDataEventHandler;
+ private static readonly object s_pkgEventLock = new object();
private static Interop.PackageManager.PackageManagerEventCallback s_packageManagerEventCallback;
private static Dictionary<IntPtr, Interop.PackageManager.PackageManagerTotalSizeInfoCallback> s_totalSizeInfoCallbackDict = new Dictionary<IntPtr, Interop.PackageManager.PackageManagerTotalSizeInfoCallback>();
{
add
{
- SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Install);
- RegisterPackageManagerEventIfNeeded();
- s_installEventHandler += value;
+ lock (s_pkgEventLock)
+ {
+ SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Install);
+ RegisterPackageManagerEventIfNeeded();
+ s_installEventHandler += value;
+ }
}
remove
{
- s_installEventHandler -= value;
- UnregisterPackageManagerEventIfNeeded();
- UnsetPackageManagerEventStatus();
+ lock (s_pkgEventLock)
+ {
+ s_installEventHandler -= value;
+ UnregisterPackageManagerEventIfNeeded();
+ UnsetPackageManagerEventStatus();
+ }
}
}
{
add
{
- SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Uninstall);
- RegisterPackageManagerEventIfNeeded();
- s_uninstallEventHandler += value;
+ lock (s_pkgEventLock)
+ {
+ SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Uninstall);
+ RegisterPackageManagerEventIfNeeded();
+ s_uninstallEventHandler += value;
+ }
}
remove
{
- s_uninstallEventHandler -= value;
- UnregisterPackageManagerEventIfNeeded();
- UnsetPackageManagerEventStatus();
- }
+ lock (s_pkgEventLock)
+ {
+ s_uninstallEventHandler -= value;
+ UnregisterPackageManagerEventIfNeeded();
+ UnsetPackageManagerEventStatus();
+ }
+ }
}
/// <summary>
{
add
{
- SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Upgrade);
- RegisterPackageManagerEventIfNeeded();
- s_updateEventHandler += value;
+ lock (s_pkgEventLock)
+ {
+ SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Upgrade);
+ RegisterPackageManagerEventIfNeeded();
+ s_updateEventHandler += value;
+ }
}
remove
{
- s_updateEventHandler -= value;
- UnregisterPackageManagerEventIfNeeded();
- UnsetPackageManagerEventStatus();
+ lock (s_pkgEventLock)
+ {
+ s_updateEventHandler -= value;
+ UnregisterPackageManagerEventIfNeeded();
+ UnsetPackageManagerEventStatus();
+ }
}
}
{
add
{
- SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Move);
- RegisterPackageManagerEventIfNeeded();
- s_moveEventHandler += value;
+ lock (s_pkgEventLock)
+ {
+ SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.Move);
+ RegisterPackageManagerEventIfNeeded();
+ s_moveEventHandler += value;
+ }
}
remove
{
- s_moveEventHandler -= value;
- UnregisterPackageManagerEventIfNeeded();
- UnsetPackageManagerEventStatus();
+ lock (s_pkgEventLock)
+ {
+ s_moveEventHandler -= value;
+ UnregisterPackageManagerEventIfNeeded();
+ UnsetPackageManagerEventStatus();
+ }
}
}
{
add
{
- SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.ClearData);
- RegisterPackageManagerEventIfNeeded();
- s_clearDataEventHandler += value;
+ lock (s_pkgEventLock)
+ {
+ SetPackageManagerEventStatus(Interop.PackageManager.EventStatus.ClearData);
+ RegisterPackageManagerEventIfNeeded();
+ s_clearDataEventHandler += value;
+ }
}
remove
{
- s_clearDataEventHandler -= value;
- UnregisterPackageManagerEventIfNeeded();
- UnsetPackageManagerEventStatus();
+ lock (s_pkgEventLock)
+ {
+ s_clearDataEventHandler -= value;
+ UnregisterPackageManagerEventIfNeeded();
+ UnsetPackageManagerEventStatus();
+ }
}
}