Domanda

Qualcuno può dirmi che cosa sta per succedere in questo codice quando viene rilevato un errore? Idealmente dovrebbe continuare l'istruzione foreach fino a quando non arriva all'ultimo record, ma ho il sospetto che è fermarsi in mezzo alla operazione perché quando controllo il numero di file spostato si parte da 225. Se è infatti fermare a causa di un errore , cosa posso fare per farlo continuare il ciclo?

Sto creando un nuovo manager di caricamento per il nostro software e la necessità di pulire i vecchi file su. Ci sono circa 715 file orfani eguagliando circa 750 MB dopo un anno e mezzo di utilizzo perché gli sviluppatori originali non hanno scritto il codice per i vecchi file correttamente sovrascrittura Se uno nuovo è stato caricato. Essi hanno inoltre salvati i file in una singola directory. Non posso sopportare che così mi sto muovendo tutti i file in una struttura - Nome della nave - ServiceRequesetID - file caricati per quel servizio. Sto anche dando agli utenti una GridView per visualizzare e eliminare i file non è più necessario che lavorano al servizio.

protetto Button1_Click vuoto (object sender, EventArgs e)     {

    GridViewRow[] rowArray = new GridViewRow[gv_Files.Rows.Count];
    gv_Files.Rows.CopyTo(rowArray, 0);

    int i = -1;

    foreach(GridViewRow row in rowArray)
    {
        i++;
        string _serviceRequestID = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_SRID")).Text;
        string _vesselName = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_VesselID")).Text;
        string _uploadDIR = Server.MapPath("uploadedFiles");
        string _vesselDIR = Server.MapPath("uploadedFiles" + "\\" + _vesselName);
        string _fileName = ((Label)gv_Files.Rows[row.RowIndex].FindControl("lbl_FileName")).Text;
        DirectoryInfo dInfo = new DirectoryInfo(_uploadDIR);
        DirectoryInfo dVessel = new DirectoryInfo(_vesselDIR);
        DirectoryInfo dSRID = new DirectoryInfo(_serviceRequestID);
        dInfo.CreateSubdirectory(_vesselName);
        dVessel.CreateSubdirectory(_serviceRequestID);

        string _originalFile = _uploadDIR + "\\" + _fileName;
        string _fileFullPath = Path.Combine(Server.MapPath("uploadedFiles/" + _vesselName + "/" + _serviceRequestID + "/"), _fileName);
        FileInfo NewFile = new FileInfo(_fileFullPath);
        string _fileUploadPath = _vesselName + "/" + _serviceRequestID + "/" + _fileName;
        string sourceFile = _originalFile;
        FileInfo _source = new FileInfo(sourceFile);
        string destinationFile = _fileFullPath;

            try
            {
                {
                    File.Move(sourceFile, destinationFile);
                    movefiles.InsertNewUploadPath(Convert.ToDecimal(_serviceRequestID), 1, _fileUploadPath);
                }
            }
            catch (Exception ex)
            {
                CreateLogFiles Err = new CreateLogFiles();
                Err.ErrorLog(Server.MapPath("Logs/ErrorLog"), ex.Message);

            }
    }

    _utility.MessageBox("Completed processing files.");
}
È stato utile?

Soluzione

Fino a quando l'errore incontrato si verifica all'interno della clausola catch try, il codice continuerà l'esecuzione all'interno del ciclo foreach. Tuttavia, se l'errore si verifica al di fuori del tentativo di cattura, la funzione uscire e genera un errore. Quanti file fa l'errore log report ??

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top