等待Workbook.RefreshAll()(C#)

我想遍历一个目录(使用C#),并在那里刷新所有的Excel工作表。 我用:

Workbook.RefreshAll(); 

我如何等待Workbook.RefreshAll()语句完成?

问题是:我打开FileAthen Workbook.RefreshAll() ,然后打开FileB – 刷新FileA被终止。 我find的唯一解决办法就是打电话

 System.Threading.Thread.Sleep(20000); 

我发现非常不可爱的

有人知道更好的方法来等待吗?

更新31.05.2016 …

谢谢你的帮助。 我发现了以下解决scheme:

 foreach (MSExcel.WorkbookConnection cnn in wb.Connections) { if (cnn.Type.ToString() == "xlConnectionTypeODBC") { cnn.ODBCConnection.BackgroundQuery = false; } else { cnn.OLEDBConnection.BackgroundQuery = false; } } 

坦率

如果您浏览Workbook并将所有QueryTableBackgroundQuery属性设置为false ,则在继续之前, RefreshAll应该完成。

 foreach (Worksheet worksheet in workbook.Worksheets) { foreach (QueryTable table in worksheet.QueryTables) table.BackgroundQuery = false; } //This will finish executing before moving on workbook.RefreshAll(); 

也许你可以查询国家:

Application.CalculationState = xldone

有关文档,请看这里: http : //msdn.microsoft.com/en-us/library/office/bb220901(v=office.12).aspx