Ho un paio di funzioni, ogni funzione verifica un insieme di regole e aggiorna un oggetto comune. L'oggetto comune è solo un contenitore che contiene un elenco di regole che hanno superato o fallito. Mi piacerebbe implementarlo come asincrono. C'è qualche aspetto negativo di questo approccio? Ci sono raccomandazioni? Di seguito il codice di esempio che intendo implementare.
using System.Collections.Generic;
using System.Threading.Tasks;
namespace RetailServiceCheck.Core
{
//This is shared result
public class Results
{
public List<int> FailedRules = new List<int>();
public List<int> PassedRules = new List<int>();
}
//To Check the rules
public class RuleChecker
{
Results ruleResult = null;
public RuleChecker()
{
ruleResult=new Results();
}
public Results ValidateRule()
{
var ckr1=CheckRule1();
var ckr2=CheckRule2();
var ckr3=CheckRule3();
Task.WaitAll(ckr1, ckr2, ckr3);
return ruleResult;
}
private async Task CheckRule1()
{
//Do some rule check and if the based on rule failure or pass
ruleResult.PassedRules.Add(1);
}
private async Task CheckRule2()
{
//Do some rule check and if the based on rule failure or pass
ruleResult.FailedRules.Add(2);
}
private async Task CheckRule3()
{
//Do some rule check and if the based on rule failure or pass
ruleResult.PassedRules.Add(3);
}
}
}