Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Esecuzione multipla di un'applicazione
Forum - C# / VB.NET - Esecuzione multipla di un'applicazione

Avatar
juniorT (Normal User)
Newbie


Messaggi: 4
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 1:18
Martedì, 30/06/2009
Salve sono nuovo del forum, vi chiedo un aiuto gentilmente :hail: . Ecco vorrei fare in modo di mandare in esecuzione più di una volta la stessa applicazione, e far in modo che non vada in conflitto. Se non sbaglio ogni applicazione mandata in esecuzione viene messa nella lista dei dei processi,dove ogni processo ha un ID per essere gestito; quindi se faccio eseguire la stessa applicazione mentre è già aperta, succede che avrò lo stesso ID di processo, creando così un conflitto. Voi che siete più esperti di me, mi sapreste indicare come fare a risolvere questo problema??  :-?:(

Dimenticavo l'applicazione windows è stata realizzata con visual studio 2008.

Ringrazio voi tutti per il vostro interesse. :k:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 8:50
Martedì, 30/06/2009
E' impossibile che due processi abbiano lo stesso ID dato che e' un valore univoco a livello di sistema.

Puoi eseguire la tua applicazione quante volte vuoi senza problemi (a meno che tu non lo impedisca esplicitamente, con varie tecniche).



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
juniorT (Normal User)
Newbie


Messaggi: 4
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 10:03
Martedì, 30/06/2009
Forse hai ragione.
L'applicazione in pratica deve copiare dei file, quindi penso che nel momento in cui si va a leggere un file su questo ci sia un indice per la lettura. Quando il file è già in fase di lettura, poi la stessa applicazione viene eseguita un seconda volta, mentre il file ha già l'indice di lettura spostato. Questa esecuzione multipla, della stessa applicazione che va a leggere lo stesso file nella stessa directory, forse questo è il problema dovuto al conflitto.
Ho cercato di dare questa interpretazione al problema, non so ditemi voi.:hail:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 10:12
Martedì, 30/06/2009
Devi utilizzare una sorta di "Mutua esclusione" (leggi qualcosa riguardo il problema "Produttore-Consumatore"), ad esempio utilizzando dei "Semafori" per fare in modo che non facciano la stessa operazione insieme! :k:

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:52
Martedì, 30/06/2009
Forse e' meglio prima chiarire il tipo di programma che vuoi realizzare e quale algoritmo intendi usare, per poi ragionarci su.

Ad esempio, forse e' meglio utilizzare diversi thread in un processo piuttosto che diversi processi.

In ogni caso, devi avere chiarissimi tutti i concetti legati alla esecuzione concorrente delle applicazioni e della condivisione di file ...


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
juniorT (Normal User)
Newbie


Messaggi: 4
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 12:17
Mercoledì, 01/07/2009
L'applicazione non fa altro che copiare due file tramite porta RS232, quindi funziona correttamnte per una sola porta seriale. Sul mio pc ho montato ben 7 porte RS232.
La cosa che voglio realizzare è la seguente: eseguire contemporaneamente la mia applicazione, per un numero variabile di volte, che dipende appunto dalle porte utilizzate; posso utilizzare 1-2-3-...-7 porte conteporaneamente.
Come dicevo se l'applicazione la si esegue più volte, allora si blocca nel momento che copia i due file, quindi penso che il problema stà nella risorsa condivisa tra i processi. La risorsa condivisa sono i due file.
Attendo vostre.  :hail:

PM Quote
Avatar
juniorT (Normal User)
Newbie


Messaggi: 4
Iscritto: 30/06/2009

Segnala al moderatore
Postato alle 12:46
Mercoledì, 01/07/2009
Per gestire questo problema che mi consigliate? Usare i thread? :(

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:55
Mercoledì, 01/07/2009
Beh si ti consiglio di usare i Thread, però come ho già detto devi utilizzare dei metodi di "Mutua esclusione" per far si che due Thread non si occupino dello stesso File nel medesimo quanto di tempo :) faccio un piccolo esempio:
Crei una Structure così...
Codice sorgente - presumibilmente VB.NET

  1. Structure MyThread
  2.         Dim f As String
  3.         Dim t As Thread
  4.     End Structure


...e un Array di MyThread...
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim Threads(7) As MyThread


...e nel codice di ogni Thread fai un controllo mediante ciclo For/While/Do per assicurarti che nessun altro Thread stia occupandosi di quel file! :k:
Questa è un idea che mi è venuta al momento, ma potrebbe avere anche dei difetti visto che non ci ho ragionato molto :D

PM Quote
Avatar
Gianluca87 (Ex-Member)
Expert


Messaggi: 300
Iscritto: 16/11/2008

Segnala al moderatore
Postato alle 16:20
Mercoledì, 01/07/2009
un bel multi threading uno per ogni porta com oppure configurabile via interfaccia...


a domanda precisa, risposta precisa...
a domanda generica, risposta generica...
PM Quote