public void UpdateDownloadStatus(LocalPackageInfo packageInfo) { if (packageInfo == null) { throw new ArgumentNullException(nameof(packageInfo)); } if (!packageInfo.LockProvider.TryLock(out object lockToken)) { return; // marked to delete? } try { // update! lock (packagesLock) { localPackageManager.UpdateDownloadStatus(packageInfo.DownloadStatus); } } finally { packageInfo.LockProvider.Unlock(lockToken); } }