-2

こんにちは皆さん、テキストファイルを取得してメールする小さなコンソールアプリを書くのに忙しいですが、メールを送信した後、メールされたテキストファイルをバックアップフォルダーファイルに移動する必要があります...問題は、ファイルを削除しようとするとこのエラーが発生することです。しかし、私はファイルが私によって使用されていないことを知っています。

別のプロセスで使用されているため、プロセスはファイル 'C:\Files\Configs\Errorlog.txt' にアクセスできません。

file.move と file.copy の 2 つの方法を使用しましたが、削除しようとしても機能しません。同じエラーが表示されます。助けてください

class Program
{
    static void Main(string[] args)
    {
        {
            MailMessage mail = new MailMessage();

            SmtpClient SmtpServer = new SmtpClient("******");
            mail.From = new MailAddress("*********");
            mail.To.Add(ConfigurationSettings.AppSettings["EmailReceiver"]);
            mail.Subject = "Test HHjhihH- Mail";
            mail.Body = "TestMail";

            string folder = ConfigurationSettings.AppSettings["ConfigPath"];

            try
            {
                string[] txtfiles = Directory.GetFiles(folder, "*.txt");

                foreach (var txtfile in txtfiles)  //FileInfo file in Files )
                {
                    if (!File.Exists("ConfigPath"))//txtfile.Length != 0)
                    {
                        mail.Attachments.Add(new System.Net.Mail.Attachment(txtfile));

                        Console.WriteLine("sending Config File....");
                    }
                    else
                    {
                        Console.WriteLine("No files in the directory");

                        return;
                    }
                }

            }
            catch (Exception)
            {
                Console.WriteLine("Incorrect Path" + ConfigurationSettings.AppSettings["ConfigPath"] + ",does not exist");
                return;
            }

            SmtpServer.Port = ****;
            SmtpServer.Send(mail);
            Console.WriteLine("Message Sent");

        }

        {



            string fileName = string.Empty;
            fileName = "Errorlog.txt";
            string sourceFile = @"C:\Files\Configs\" + fileName;
            string destinationFile = @"C:\Files\BackupConfigs\" + fileName;

            // To move a file or folder to a new location:

            **//error PROBLEM OCCRURS HERE**

            File.Copy(sourceFile, destinationFile);
       // copies the file but wont delete original file

            File.Delete(@"C:\Files\Configs\Errorlog.txt");

        // when i use File.move(sourceFile, destinationFile); i get same error


        }}
4

4 に答える 4

2

new System.Net.Mail.Attachment(txtfile)結果を変数に代入する必要があります。

var attachment = new System.Net.Mail.Attachment(txtfile);

メールを送信したら、添付ファイルを破棄する必要があります。

attachment.Dispose();

ファイルを開いたままにしています。

于 2013-10-09T10:17:20.750 に答える
0

Directory.GetFiles(folder, "*.txt")純粋なファイル名を提供すると思います。したがって、絶対ファイル名を使用するか、ファイルが実行中のディレクトリ (デバッグ、リリースなど) 内にあることを確認してください。

于 2013-10-09T10:16:24.950 に答える
0
        SmtpServer.Port = ****;
        SmtpServer.Send(mail); 
        Mail.Dispose();
        Console.WriteLine("Message Sent");

メールを送信した後、 Mail.dispose() を使用して問題を解決し、送信後にファイルを削除できました。ご意見ありがとうございます

于 2013-10-09T11:11:31.333 に答える
0

ファイル アクセスを操作するたびに、using 句を使用する必要があると思います。そうしないと、アプリケーションを一度実行した後、ファイルがバックグラウンドで使用されます。

于 2013-10-09T10:24:39.563 に答える