【发布时间】:2016-08-18 01:22:23
【问题描述】:
我的代码的目的是监视一个文件夹中的 xml 文件。如果一个文件放在文件夹中,它将被读取,转换为 byte[],通过套接字发送到服务器,然后删除。
这仅在之前未发送的文件被放置在文件夹中时才有效。
示例:我发送 1.xml,一切正常,文件被删除。
我将 1.xml 粘贴到文件夹中。
文件被读取,但在删除时引发异常(由另一个
过程)。
如果我等待足够长的时间或替换文件名,它会正常工作。 我可以添加一个延迟(经过测试至少可以工作 3 秒),但这违背了我的程序的目的。
我用 Python 编写了同样的代码,它运行良好,所以我很难过。 请参阅下面的代码。谢谢你的帮助!
string[] files;
while (sending)
{
files = Directory.GetFiles(Events_Directory, "*.xml");
foreach(string file in files)
{
Message = System.Text.UTF8Encoding.ASCII.GetBytes(Regex.Replace(
File.ReadAllText(file), @"[\r\n\t ]+", ""));
Thread.Sleep(500);
Sock.Send(Message);
File.Delete(file);
}
}
【问题讨论】: