Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    46

    [c#] Gestione errori try-catch concorrenza file

    Salve,
    ho scritto un applicativo in c# su visual studio 2008.
    Mi trovo a dover gestire una concorrenza su un file da cancellare che viene scritto da un'altra applicazione.
    Ho inserito la file.delete all'interno del try e vorrei, semplicemente, che se non riesce a cancellarlo non ritorni nessun errore, perchè poi ci riproverà al successivo giro dell'applicazione. Adesso invece se trova il file occupato da un altro processo mi si blocca l'applicazione con l'errore che non ha potuto accedere al file.
    Come devo gestirla?
    Grazie!!!
    Ciao!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Ho spostato la discussione all'interno del forum dedicato a Visual Basic (VBx, VBA, VBScript, ...) e ai linguaggi per .NET Framework (VB.NET, C#, ...).

    In futuro, poni in questo forum le domande relative a questi linguaggi.

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

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

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    46
    codice:
    if (by_ing5.Length > 0 && by_ing6.Length > 0)
    {
       try
       {
           File.Delete(@"Z:\TEMP\scatta_usc");
       }
       catch { }
    }
    Deve semplicemente cancellare quel file (è un file di testo) se non ci riesce non deve tornare nessun errore, adesso invece mi si blocca perchè lo trova occupato da un altro processo.
    A me basterebbe che non faccia nulla perchè ogni 300ms il programma cerca il file, se lo trova salva una foto e cancella il file scatta_usc, se non lo cancella al successivo giro lo ritrova lo riscatta la foto e lo cancella, mi andrebbe benissimo così

  5. #5
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Non ho l'IDE sotto mano, ma prova così:

    codice:
    if (by_ing5.Length > 0 && by_ing6.Length > 0)
    {
       try
       {
           File.Delete(@"Z:\TEMP\scatta_usc");
       }
       catch (Exception ex)
       {
       }
    }
    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    46
    Originariamente inviato da ShaleN
    Non ho l'IDE sotto mano, ma prova così:

    codice:
    if (by_ing5.Length > 0 && by_ing6.Length > 0)
    {
       try
       {
           File.Delete(@"Z:\TEMP\scatta_usc");
       }
       catch (Exception ex)
       {
       }
    }
    c'avevo quasi pensato, provo e vedo se funziona

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da ShaleN
    Non ho l'IDE sotto mano, ma prova così [...]
    Io non riesco a notare la differenza rispetto al codice iniziale.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da alka
    Io non riesco a notare la differenza rispetto al codice iniziale.
    Anch'io.... Eppure porto gli occhiali!

  9. #9
    Utente di HTML.it L'avatar di ShaleN
    Registrato dal
    Aug 2010
    Messaggi
    517
    Credevo che fra i due ci fosse differenza...

    Buona a sapersi.


    Le vie del Signore sono infinite. È la segnaletica che lascia a desiderare.
    La luce viaggia più veloce del suono. Per questo alcune persone sembrano brillanti finchè non parlano.
    Occhio per occhio uguale... occhio al quadrato

  10. #10
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Ciao mi interessava questo problema perciò te l'ho fatta io una ricerca per te e ho trovato questo:
    codice:
    bool CheckIfFileIsBeingUsed(string fileName){
    
         try{
    
             File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.None);
             File.Close(); //Questa l'ho agiunta io altrimenti mi rimaneva aperto.
    
          }
    
          catch (Exception exp){
    
               return true;
    
          }
    
          return false;
    
    }
    Praticamente invece che provare direttamente a cancellare il file lui verifica se prima è libero. Non ho capito il perchè di questo trick ma sembra essere la soluzione. Facci sapere.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.