} // proc BeginEndConfigurationUser private async Task RefreshUserDataAsync(bool force) { bool UpdateUserData(PrivateUserData userData, IDataRow r) { try { userData.UpdateData(r, force); return(true); } catch (Exception e) { userData.Log.Except(e); userData.Dispose(); return(false); } } // func UpdateUserData using (var ctx = await CreateSystemContextAsync()) { var userData = ctx.GetService <IPpsPrivateDataContext>(); var users = await userData?.CreateSelectorAsync("dbo.serverLogins", throwException : false); if (users != null) { // fetch user list foreach (var u in users) { lock (userList) { var userId = u.GetProperty("ID", 0L); if (userId > 0) { var idx = userList.FindIndex(c => c.Id == userId); if (idx >= 0) { if (!UpdateUserData(userList[idx], u)) { userList.RemoveAt(idx); } } else { var user = new PrivateUserData(this, userId, PrivateUserData.CreateUserIdentity(u)); if (UpdateUserData(user, u)) { userList.Add(user); } } } else { Log.Warn("User ignored (id={userId})."); } } } // foreach } // users != null await ctx.RollbackAsync(); } } // proc RefreshUserData
} // func GetClientApplicationInfo private async Task RefreshClientApplicationInfosAsync(DirectoryInfo appSourceDirectory, string virtualRoot) { // scan for msi-files foreach (var fi in appSourceDirectory.EnumerateFiles("*.msi", SearchOption.TopDirectoryOnly)) { clientApplicationInfos.Add(await Task.Run(() => GetClientMsiApplication(fi, virtualRoot))); } } // proc RefreshClientApplicationInfosAsync