Resolved the multi-threading issue

This commit is contained in:
ashutosh.nehete 2025-09-18 12:01:08 +05:30
parent 0dd5633f2e
commit 0ecc07777f

View File

@ -995,12 +995,22 @@ namespace Marco.Pms.Services.Service
{ {
using var scope = _serviceScopeFactory.CreateScope(); using var scope = _serviceScopeFactory.CreateScope();
var _permission = scope.ServiceProvider.GetRequiredService<PermissionServices>(); var _permission = scope.ServiceProvider.GetRequiredService<PermissionServices>();
var permission = scope.ServiceProvider.GetRequiredService<PermissionServices>();
var _generalHelper = scope.ServiceProvider.GetRequiredService<GeneralHelper>(); var _generalHelper = scope.ServiceProvider.GetRequiredService<GeneralHelper>();
// --- Step 1: Run independent permission checks in PARALLEL --- // --- Step 1: Run independent permission checks in PARALLEL ---
var projectPermissionTask = _permission.HasProjectPermission(loggedInEmployee, projectId); var projectPermissionTask = _permission.HasProjectPermission(loggedInEmployee, projectId);
var viewInfraPermissionTask = _permission.HasPermission(PermissionsMaster.ViewProjectInfra, loggedInEmployee.Id, projectId); var viewInfraPermissionTask = Task.Run(async () =>
var manageInfraPermissionTask = permission.HasPermission(PermissionsMaster.ManageProjectInfra, loggedInEmployee.Id, projectId); {
using var newScope = _serviceScopeFactory.CreateScope();
var permission = newScope.ServiceProvider.GetRequiredService<PermissionServices>();
return await permission.HasPermission(PermissionsMaster.ViewProjectInfra, loggedInEmployee.Id, projectId);
});
var manageInfraPermissionTask = Task.Run(async () =>
{
using var newScope = _serviceScopeFactory.CreateScope();
var permission = newScope.ServiceProvider.GetRequiredService<PermissionServices>();
return await permission.HasPermission(PermissionsMaster.ManageProjectInfra, loggedInEmployee.Id, projectId);
});
await Task.WhenAll(projectPermissionTask, viewInfraPermissionTask, manageInfraPermissionTask); await Task.WhenAll(projectPermissionTask, viewInfraPermissionTask, manageInfraPermissionTask);