我知道当调用异步方法时,会从池中分配一个线程,这是有代价的。
using (var r = XmlReader.Create(fs, new XmlReaderSettings() { Async = true }))
{
while (await r.ReadAsync())
{
if (r.IsStartElement())
{
switch (r.Name)
{
case "a": var a = await r.ReadElementContentAsStringAsync(); break;
case "b": var b = await r.ReadElementContentAsStringAsync(); break;
case "c": var c = await r.ReadElementContentAsStringAsync(); break;
}
}
}
}
在池中分配线程来执行像读取xml元素这样简单的过程,这不是在浪费处理吗?
我认为,只有在知道标记的内容很大时,才应该使用xml中的异步读取,例如base64中的字符串等。
上面的代码是同步编写的,不会有更好的性能吗?当然,阅读大约5000个xml文件或单个大型xml文件。