Resolved the multi-threading issue
This commit is contained in:
parent
0dd5633f2e
commit
0ecc07777f
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user