gpt4 book ai didi

c# - TextWriter 不写入所有文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:04 25 4
gpt4 key购买 nike

我已经编写了一个服务,它有一个单独的线程运行,它从数据库中读取大约 400 条记录并将它们序列化为 xml 文件。它运行良好,没有错误,它报告所有文件都已正确导出,但之后只出现少数 xml 文件,而且每次总是不同的数字。我查了一下是不是某个记录导致的问题,但是都读的很好,好像写的是fin,但是不要...

在尝试并在每次写入之间延迟 250 毫秒后,它们全部正确导出,所以我认为这一定与如此快速地连续写入这么多文件有关,但我不知道为什么,我本以为写错了会报什么错,结果什么也没有。

这里是任何想要尝试的人的代码:

static void Main(string[] args)
{
ExportTestData();
}

public static void ExportTestData()
{
List<TestObject> testObjs = GetData();

foreach (TestObject obj in testObjs)
{
ExportObj(obj);
//Thread.Sleep(10);
}
}

public static List<TestObject> GetData()
{
List<TestObject> result = new List<TestObject>();

for (int i = 0; i < 500; i++)
{
result.Add(new TestObject()
{
Date = DateTime.Now.AddDays(-1),
AnotherDate = DateTime.Now.AddDays(-2),
AnotherAnotherDate = DateTime.Now,
DoubleOne = 1.0,
DoubleTwo = 2.0,
DoubleThree = 3.0,
Number = 345,
SomeCode = "blah",
SomeId = "wobble wobble"
});
}

return result;
}

public static void ExportObj(TestObject obj)
{
try
{
string path = Path.Combine(@"C:\temp\exports", String.Format("{0}-{1}{2}", DateTime.Now.ToString("yyyyMMdd"), String.Format("{0:HHmmssfff}", DateTime.Now), ".xml"));
SerializeTo(obj, path);
}
catch (Exception ex)
{

}
}

public static bool SerializeTo<T>(T obj, string path)
{
XmlSerializer xs = new XmlSerializer(obj.GetType());
using (TextWriter writer = new StreamWriter(path, false))
{
xs.Serialize(writer, obj);
}
return true;
}

尝试注释\取消注释 Thread.Sleep(10) 以查看问题

有人知道它为什么这样做吗?并且可以建议我如何避免这个问题?

谢谢

编辑: 已解决。基于时间的文件名不够唯一,会覆盖以前写入的文件。应该早点发现,谢谢你的帮助

最佳答案

也许尝试将 writer 放在 using block 中以便立即处理?有点像

XmlSerializer xs = new XmlSerializer(obj.GetType());
using(TextWriter writer = new StreamWriter(path, false))
{
xs.Serialize(writer, obj);
}

关于c# - TextWriter 不写入所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4792603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com