private static void InternalEventCallback(string packageType, string packageId, Interop.PackageManager.EventType eventType, Interop.PackageManager.PackageEventState eventState, int progress, Interop.PackageManager.ErrorCode error, IntPtr user_data)
{
+ PackageManagerEventArgs args;
try
{
+ args = new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress);
+ }
+ catch (Exception e)
+ {
+ Log.Warn(LogTag, e.Message);
+ return;
+ }
+
+ EventHandler<PackageManagerEventArgs> handlers = null;
+ lock (s_pkgEventLock)
+ {
if (eventType == Interop.PackageManager.EventType.Install)
{
- s_installEventHandler?.Invoke(null, new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress));
+ handlers = s_installEventHandler;
}
else if (eventType == Interop.PackageManager.EventType.Uninstall)
{
- s_uninstallEventHandler?.Invoke(null, new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress));
+ handlers = s_uninstallEventHandler;
}
else if (eventType == Interop.PackageManager.EventType.Update)
{
- s_updateEventHandler?.Invoke(null, new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress));
+ handlers = s_updateEventHandler;
}
else if (eventType == Interop.PackageManager.EventType.Move)
{
- s_moveEventHandler?.Invoke(null, new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress));
+ handlers = s_moveEventHandler;
}
else if (eventType == Interop.PackageManager.EventType.ClearData)
{
- s_clearDataEventHandler?.Invoke(null, new PackageManagerEventArgs(packageType, packageId, (PackageEventState)eventState, progress));
+ handlers = s_clearDataEventHandler;
}
}
- catch (Exception e)
- {
- Log.Warn(LogTag, e.Message);
- }
+
+ handlers?.Invoke(null, args);
}
private static void UnregisterPackageManagerEventIfNeeded()