代码之家  ›  专栏  ›  技术社区  ›  Vinicius Gonçalves

XmlReader异步与Sinc

  •  0
  • Vinicius Gonçalves  · 技术社区  · 7 年前

    我知道当调用异步方法时,会从池中分配一个线程,这是有代价的。

    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文件。

    0 回复  |  直到 7 年前