Come ricevere un "feedback" da un applicativo

di il
3 risposte

Come ricevere un "feedback" da un applicativo

A causa di un componente non "thread safe" ho creato un applicativo "madre" e un applicativo "figlio" che contiene tale componente. All'interno di un task, la madre salva un file in una cartella "temp" ed esegue il figlio tramite ShellExec. Quest'ultimo individua il file tramite FindFirst e lo sposta in una seconda cartella temporanea per evitare un conflitto in caso la madre dovesse eseguire ulteriori copie del figlio. Al termine dell'elaborazione di un file il relativo figlio si chiude. Fin qui il tutto fila liscio e, in caso di esecuzione parallela di figli, in modo piuttosto rapido.

Ora, la madre deve processare i files elaborati dai figli. Attualmente faccio verificare alla madre lo stato della cartella "temp" tramite la funzione "TDirectory.IsEmpty(temp)". Funziona, ma non mi sembra l'approccio corretto. Mi pare più pulito se ci potesse essere un "dialogo" tra madre e figlio in modo che il figlio comunichi alla madre il termine del processo individuale. Così, la madre potrebbe raccogliere i vari feedback e proseguire con l'elaborazione dei files quando tutti i processi dei figli sono stati comunicati come terminati.

Spero di essere riuscito a spiegare il mio intento. Non avendo molta padronanza di programmazione a livello di Handles e Messages volevo chiedervi se mi potevate comunicare un link dove trovare una spiegazione e un esempio per ciò che sto provando di realizzare oppure di dirmi la vostra se il mio approccio dovesse essere errato sin dall'inizio. : )

Mille grazie, Ale

3 Risposte

  • Re: Come ricevere un "feedback" da un applicativo

    ??? manda messaggi UDP se sulla LAN e fine del dramma.
  • Re: Come ricevere un "feedback" da un applicativo

    Mi sembra una architettura eccessivamente complicata questa legata allo scambio di file, verifica della presenza, blocco e spostamento... dato che i processi devono essere contemporaneamente in esecuzione e parlarsi tra di loro, non era meglio rendere "thread safe" quello che non lo era, magari inviando messaggi all'interno dell'applicazione, piuttosto che disgiungere le due parti?

    Da un lato, dividere i programmi ha dei benefici: l'architettura software tende meno al monolite. Del resto però, se devono funzionare in modo combinato e parlarsi durante l'esecuzione, di fatto hai comunque a che fare con un monolite.

    A questo punto, mi associo al suggerimento di mettere in comunicazione i due software con un protocollo di rete.

    Ciao!
  • Re: Come ricevere un "feedback" da un applicativo

    Proverò documentarmi sull'UDP allora.

    Mille grazie! : )
Devi accedere o registrarti per scrivere nel forum
3 risposte