XDocument异步加载选项

时间:2018-01-29 18:26:08

标签: .net async-await linq-to-xml .net-standard .net-standard-2.0

dotnetcore 2.0提供了这些异步加载XDocument的方法:

public static Task<XDocument> LoadAsync(Stream stream, LoadOptions options, CancellationToken cancellationToken);
public static Task<XDocument> LoadAsync(TextReader textReader, LoadOptions options, CancellationToken cancellationToken);
public static Task<XDocument> LoadAsync(XmlReader reader, LoadOptions options, CancellationToken cancellationToken);

然而,这些在.NET Standard 2.0中不可用。因此,选项似乎是执行同步加载(根据具体情况可能没问题),或者可能将同步加载包装在异步任务中,如下所示:

Task.Run(() => { xmlDoc = XDocument.Load(reader); });

但不确定这是否比普通同步方法带来任何好处。例如。如果代码在IIS中的AppPool进程中运行,则对来自线程池的线程执行同步调用,如果底层XmlReader在等待IO时阻塞,则该线程不会返回到线程池 - 我认为与异步/等待方法(例如LoadAsync())一样。

我的摘要是否正确?

还有其他选择吗?

0 个答案:

没有答案