Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [VB.Net] programma in esecuzione automatica che parte due volte

    salve a tutti,

    ho fatto un'applicazione VB.Net funzionante su xp e 2000... ora però ho un problema quando vado a installare questo programma su un server 2008 terminal service.

    il problema è che ho messo il programma in esecuzione automatica tramite la chiave di registro run nel localmachine, però quando apro una sessione in terminal me lo fà partire due volte in parallelo e da task manager ho visto che questi due processi sono avviati dallo stesso utente.

    siccome ho tolto l'opzione rendi a singola istanza (anche lasciandola non cambiava nulla tranne che una dopo veniva segata) perchè sugli altri pc usciva un errore di microsoft.visualbasic, ho fatto così:

    codice:
            Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
                If Process.GetProcessesByName("PCInattivo").Length > 1 Then
                    e.Cancel = True
                    Exit Sub
                End If
            End Sub
    solo che siccome i due processi vengono caricati in parallelo, tutti e due entrano nella if e quindi si segano...

    la mia domanda è: come posso fare per fargli avviare almeno un processo?

    grazie
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    devi usare un mutex.. controlla il suo utilizzo sull'msdn

    Un mutex è cmq un semaforo che viene gestito per regolare l'accesso ai vari thread

  3. #3
    alt alt....
    le due istanze vengono caricate nello stesso momento e non prima una e poi l'altra. quindi a logica si vedono in contemporanea e si terminano...

    capisci dove stà il problema?
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    allora il problema sta nell'esecuzione automatica..

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da andreaciao_22
    le due istanze vengono caricate nello stesso momento e non prima una e poi l'altra. quindi a logica si vedono in contemporanea e si terminano...
    Non so quante possibilità ci sono che questa possa avvenire realmente, anche se il meccanismo che hai adottato (verifica del processo attivo in base al nome) può essere problematico.

    Io farei uso di un Mutex, come ti è stato suggerito.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    lo sò che può succedere una volta su tre miliardi, ma a me è capitato e stà capitando tuttora in questo caso specifico... ho provato a usare un mutex, ma si è verificata la condizione che ho detto nel post precedente...

    ripeto: le due istanze vengono eseguite simultaneamente, quindi, quando vengono avviate, i due programmi si vedono e si terminano in contemporanea...
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da andreaciao_22
    ripeto: le due istanze vengono eseguite simultaneamente, quindi, quando vengono avviate, i due programmi si vedono e si terminano in contemporanea...
    Allora il problema è dovuto ad altro, perché non è tecnicamente possibile che entrambi i processi prendano possesso dello stesso mutex nello stesso momento.

    Tu sei sicuro di aver provato la soluzione del mutex, o hai ipotizzato che fosse lo stesso?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  8. #8
    ho provato...
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Originariamente inviato da andreaciao_22
    ho provato...
    Posta il codice...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    bha, misteri di Bill...

    dopo alcune modifiche al programma e una release nuova (il mutex non l'ho toccato) , il tutto funziona anche se mi si avviano ancora due istanze (devo capire perchè), una viene segata ora... bho

    una domanda: il mutex funziona a livello utente o a livello computer?

    nel senso se tre utenti lavorano su un pc, io avrò un applicazione per tutti e tre gli utenti o tre applicazioni distinte?

    a me interessa la seconda opzione visto che deve lavorare in terminal services.

    grazie
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.