Emanuele85 ha scritto:
Ma giusto per imparare...la soluzione Async perche secondo voi non è la soluzione giusta???
Se posso dare il mio parere, "soluzione Async" è una terminologia che non ha senso e non è chiaro cosa intendi.
Nei linguaggi .NET,
Async è solo una parola chiave per gestire operazioni usando dei
Task, ossia delle operazioni che girano in thread separati e quindi in modo asincrono, offrendo diverse metodologie per "attenderli", sicronizzarli, terminarli e così via.
Senz'altro sono uno strumento più che efficace quando è necessario gestire delle operazioni che devono essere eseguite contemporaneamente, però l'efficacia e la validità della soluzione che adotta queste tecnica dipende appunto da come questi strumenti vengono utilizzati e soprattutto orchestrati.
Data questa premessa, la "soluzione Async" è giusta se viene implementato nel modo giusto, altrimenti non lo è.
Per capire come strutturare al meglio l'applicazione, si dovrebbe capire come le varie parti del processo di elaborazione si possono interfacciare tra di loro.
Io in genere evito di gestire manualmente task, mentre piuttosto mi affido a soluzioni di livello più alto, ad esempio quelle basate su "attori" e architetture simili, in modo da usare comunque una soluzione multitasking, evitando possibilmente tutti i "mal di pancia" che in genere nascono in questi scenari, come l'accesso controllato e bloccante alle risorse in scrittura e simili.
In questo senso, trovo molto efficace l'uso di package come
Akka.NET, che permettono di astrarre sul multithreading concentrandosi maggiormente sulla logica di business.
Prova eventualmente ad approfondire questi temi o a spiegare meglio come applicheresti la tua "soluzione asincrona" in modo da capire se questi strumenti possono essere di utilità rispetto ad altri approcci.
Di sicuro a oggi, anno 2022 D.C., non userei mai qualcosa come
Application.DoEvents: non siamo su VB6, quindi possiamo evitare gli "escamotage" usando gli strumenti appositamente preposti per lo scopo.
Ciao!