我有一个WPF应用程序,可以打开一个大的excel文件。当我实例化excel工作簿时,UI会冻结,即使实例化发生在Task中也是如此。
这是UI中的代码:
excelFile = new ExcelManipulator(dlg.FileName);
Task launchExcel = excelFile.launchExcelAsync();
await launchExcel;
这是对象类中的代码:
private void launchExcel()
{
workbook = excelApp.Workbooks.Open(Path);//problem!
}
public Task launchExcelAsync()
{
return Task.Run(() => launchExcel());
}
课程的一部分
public class ExcelManipulator
{
public string Path { get; }
private Application excelApp { get; }
public Workbook workbook { get; set; }
....
}
构造函数的一部分
public ExcelManipulator(string path)
{
Path = path;
excelApp = new Application();
//now in seperate function
workbook = excelApp.Workbooks.Open(Path);//this was originally here.
}
即使我尝试在ExcelManipulator构造函数中打开工作簿,我也会得到相同的结果。
赞赏任何建议或观点
答案 0 :(得分:0)
你让它可见吗?
excelApp.Visible = true;
另一件让我想到的事情是
excelApp.ScreenUpdating = true;