1

エラーが発生したときにこのコードで何が起こるかを誰かに教えてもらえますか?理想的には、最後のレコードに到達するまでforeachステートメントを続行する必要がありますが、移動したファイルの数を確認すると225だけずれているため、操作の途中で停止していると思われます。実際にエラーが原因で停止している場合、ループを継続させるにはどうすればよいですか?

ソフトウェア用の新しいアップロードマネージャーを作成していますが、古いファイルをクリーンアップする必要があります。新しいファイルがアップロードされたときに元の開発者が古いファイルを正しく上書きするコードを記述しなかったため、1年半の使用後に約750MBに相当する約715個の孤立したファイルがあります。また、ファイルを1つのディレクトリに保存しました。私はそれを我慢できないので、すべてのファイルを構造体に移動しています-容器名-ServiceRequesetID-そのサービス用にアップロードされたファイル。また、ユーザーがサービスを実行しているときに不要になったファイルを表示および削除するためのグリッドビューをユーザーに提供しています。

protected void Button1_Click(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.");
}
4

1 に答える 1

0

発生したエラーがtrycatch句内で発生する限り、コードはforeachループ内で実行を継続します。ただし、try catchの外部でエラーが発生した場合、関数は終了してエラーをスローします。エラーログはいくつのファイルを報告しますか?

于 2010-10-04T19:39:58.540 に答える