private static event EventHandler<PackageManagerEventArgs> s_clearDataEventHandler;
private static readonly object s_pkgEventLock = new object();
- private static Interop.PackageManager.PackageManagerEventCallback s_packageManagerEventCallback = new Interop.PackageManager.PackageManagerEventCallback(InternalEventCallback);
+ private static Interop.PackageManager.PackageManagerEventCallback s_packageManagerEventCallback;
private static Dictionary<IntPtr, Interop.PackageManager.PackageManagerTotalSizeInfoCallback> s_totalSizeInfoCallbackDict = new Dictionary<IntPtr, Interop.PackageManager.PackageManagerTotalSizeInfoCallback>();
private static int s_callbackId = 0;
{
lock (Handle)
{
- Log.Debug(LogTag, "Reset Package Event");
- err = Interop.PackageManager.PackageManagerUnsetEvent(Handle);
- if (err != Interop.PackageManager.ErrorCode.None)
- {
- throw PackageManagerErrorFactory.GetException(err, "Failed to unregister package manager event event.");
- }
+ if (s_packageManagerEventCallback != null)
+ return;
+ s_packageManagerEventCallback = new Interop.PackageManager.PackageManagerEventCallback(InternalEventCallback);
err = Interop.PackageManager.PackageManagerSetEvent(Handle, s_packageManagerEventCallback, IntPtr.Zero);
}
}
{
throw PackageManagerErrorFactory.GetException(err, "Failed to unregister package manager event event.");
}
+ s_packageManagerEventCallback = null;
}
}
}