C# 文件没有被阻止?

C# 文件没有被阻止?,c#,email,serialization,streamwriter,C#,Email,Serialization,Streamwriter,我被这个例外困住了。我不确定,我的代码的哪一部分可能阻塞了xml文件 这是main.cs: foreach (var po_no in DatabaseData.getPO_NOs()) { XmlFile.serialize(DatabaseData.read(po_no)); } foreach (var fileToSend in new DirectoryInfo(AppD_Con

我被这个例外困住了。我不确定,我的代码的哪一部分可能阻塞了xml文件

这是main.cs:

 foreach (var po_no in DatabaseData.getPO_NOs())
            {
                XmlFile.serialize(DatabaseData.read(po_no));
            }

            foreach (var fileToSend in new DirectoryInfo(AppD_Config.getConfigKey("toSendFolder")).GetFiles())
            {
                Mail.Mail.send("xxxx", "xxxx", fileToSend.FullName.Split('\\').Last(), " ", fileToSend.FullName);
                Debug.WriteLine("Sent mail.");
                fileToSend.MoveTo(fileToSend.FullName.Replace(AppD_Config.getConfigKey("toSendFolder"), AppD_Config.getConfigKey("sentFolder")));
//EXCEPTION OCCURS RIGHT UP THIS COMMENT------------------
                }
XmlFile.serialize-

public static string serialize(Order order)
        {
            Directory.CreateDirectory(AppD_Config.getConfigKey("toSendFolder"));
            string fullPath = AppD_Config.getConfigKey("toSendFolder") + order.PO_NO + @"_epce_PO.xml";
            XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
            ns.Add("structure", "ORDERS");
            ns.Add("orders_structure_ver", "1");
            var serializer = new XmlSerializer(order.GetType());
            using (TextWriter writer = new StreamWriter(fullPath))
            {
                serializer.Serialize(writer, order, ns);
                writer.Close();
                return fullPath;
            }
        }
邮寄-

public static void send(string from, string to, string subject, string message, string attachmentPath)
        {
            MailMessage mail = new MailMessage(from, to);
            SmtpClient client = new SmtpClient();
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.UseDefaultCredentials = false;
            client.Host = "smtpexch";
            client.Port = 25;

            mail.Attachments.Add(new Attachment(attachmentPath));
            mail.Subject = subject;
            mail.Body = message;
            client.Send(mail);
        }
我无法找到导致文件阻塞的原因。这应该是所有与文件有关的代码

其他一切都不涉及代码。如果你觉得任何方法令人不安,我可以补充任何其他内容

提前谢谢

编辑异常

中发生类型为“System.IO.IOException”的未处理异常 mscorlib.dll

其他信息:进程无法访问该文件,因为它 正在被另一个进程使用


我认为你没有适当地配置资源。试试这个:

using (SmtpClient client = new SmtpClient())
{
    using (MailMessage mail = new MailMessage(from, to))
    {
        client.DeliveryMethod = SmtpDeliveryMethod.Network;
        client.UseDefaultCredentials = false;
        client.Host = "smtpexch";
        client.Port = 25;

        using (var attachment = new Attachment(attachmentPath))
        {
            mail.Attachments.Add(attachment);
            mail.Subject = subject;
            mail.Body = message;
            client.Send(mail);
        }                        
    }                    
}

所有使用的类都实现了
IDisposable
接口。我相信你已经找到了困难的原因。:-)

@J.vanLangen我尝试在mail.send之后放置Thread.sleep(5000),电子邮件到达我的收件箱,但5秒钟后,同样的异常发生。因此,我不明白smtp阻止文件发送的原因。对于发生
异常的那一行,您到底想实现什么?@LittleBit我需要找出,我的代码的哪一部分以某种方式阻止文件发送。发布异常详细信息如何?您有一个错误,但我们不知道错误是什么,只是您认为它是什么。请发布异常堆栈,而不仅仅是错误消息。好的,这是一个困难的问题。我将不得不重新搜索哪些类是可识别的,该死的,我不知道附件是。谢谢