Newsgroup: it.comp.lang.delphi
Titolo: Applicazione aperta da piu utenti

Buongiorno a tutti,
forse qualcuno ha gia affrontato il seguente problema e puo aiutare:
ho un'applicazione residente su un server; ora, dovendo aggiornare la mia
applicazione, come posso sapere se ci sono degli utenti che hanno lanciato
la stessa?
Ho gia pensato alla possibilita che ogni utente lasci un file tmp in una
apposita cartella ma vorrei evitare questo tipo di soluzione.
Grazie a tutti per i consigli.
Ciao
Linus
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 la stessa?
soluzione 1) (molto banale):
tenti la sovrascrittura del file, e se riesce, vuol dire che nessun utente
aveva aperta l'applicazione
soluzione 2) (elegante ma complessa)
al momento di aggiornare l'applicazione fai creare un file fittizio nella
dir dell'applicazione (es. aggiorna.tmp) anche vuoto; l'applicazione
principale fa un polling ogni 10 secondi tramite timer per verificare che
esista o meno tale file, e, se esiste, preavvisa l'utente della chiusura
immediata dell'applicazione con un countdown, quindi la chiude forzatamente.
Dopo, diciamo, 15 secondi, sarai sicuro matematicamente che nessun utente,
server compreso, avra' l'applicazione aperta, e potrai sostituire il file.
Buona fortuna ;)
Ciao, Sandro

 Ciao, Sandro
Ciao e buon natale


 server compreso, avra' l'applicazione aperta, e potrai sostituire il file.
E' la stessa soluzione che ho usato io anni fa con un programma che veniva
usato da centinaia di utenti. E' stata una scelta drastica ma alla fine era
l'unica soluzione. Imho però il requisito fondamentale è che all'interno
dell'applicazione non ci devono essere dati che l'utente potrebbe volere
salvare: sarebbe brutto fargli perdere il lavoro fatto...
-- 
Lis
Mercatino: 
http://snurl.com/sito_lis
Aiuta la ricerca contro il cancro: 
http://snurl.com/ida_team

 salvare: sarebbe brutto fargli perdere il lavoro fatto...
Purtroppo questo é un requisito fondamentale....
L'applicazione è stata strutturata in modo da avere un form padre e tanti
form figli a seconda delle funzionalita richieste.
Ognuno di questi form accede a delle tabelle.
Ora il mio aggiornamento potrebbe riguardare le tabelle oppure direttamente
le bpl che compongono la procedura.
Quindi ho la necessita che tutti gli utenti siano fuori dalla procedura.
Intanto penso.... :)


 di chiusura applicazione.
magari ci fosse :) Mi sa che stai confondendo Windows con un sistema
operativo serio. :)
Altra soluzione possibile sarebbe quella di tenere traccia degli utenti
collegati memorizzando al momento in cui si loggano al database il loro IP e
mandando loro periodicamente un messaggio (sullo stile del ping, per
capirci) per vedere se l'applicazione e' ancora aperta.
Ciao, Sandro


Ciao,
potrebbe, in mancanza di funzioni serie del SO, accompagnare l'applicazione
principale con una piccola utility che userebbe solo lui per notificare alle
varie istanze della applicazione principale l'imminente chiusura.
Basta creare, se non c'è già, un thread, e inviare in broadcast un messaggio
da lui predefinito.
Ciao
Giuseppe

 Ciao, Sandro
Ciao, Linus


 gli utenti collegati alla macchina e i file utilizzati....
Adesso che è arrivato questo "suggerimento" mi ricordo che, prima di usare
l'espediente di chiudere forzatamente l'applicazione, si poteva fare un "NET
FILES" (se non ricordo male) specificando l'eseguibile che interessava e si
vedevano gli utenti che l'avevano aperto. 


 gli utenti collegati alla macchina e i file utilizzati....
anche sotto windows 2000/XP... strumenti di amministrazione -> gestione
computer -> cartelle condivise ...
Ciao
Matteo