我是 LINQ 的新手,尤其是 PLINQ。我在 ms office interop 中玩耍,非常惊讶地发现,当使用 PLINQ 时,我的代码显着(取决于查询速度提高了一倍)更快,即使 COM 应该将我所有的并行调用编组到单个线程(https: //docs.microsoft.com/en-us/visualstudio/vsto/threading-support-in-office?view=vs-2019)。
现在我对这里可能发生的事情感到困惑。即使在非常大的工作簿上,我也没有遇到 com server is busy 或类似的异常。
Dim oWb as Excel.Workbook
oWb.Worksheets.Cast(Of Excel.Worksheet).AsParallel().Where(Function(x) x.Names.Count > 0).SelectMany(Function(x) x.Names.Cast(Of Excel.Name)).Where(Function(y) y.Name.StartsWith("abc"))
这里的常规方法是循环所有工作表,并在所有工作表上循环 .Names 集合。
我知道 Workbook.Names 属性也存在,此代码只是为了显示一个查询作为示例。
我读到可以在 Excel 中使用 PLINQ 查询(https://devblogs.microsoft.com/pfxteam/plinq-and-office-add-ins/),但我不知道这是否同样适用于互操作。
我的问题:这种并行查询现在可以与办公室互操作一起使用吗?这样做安全吗?