我嘗試創建一個c#excel 2007加載項,並且我想要「加快」「beforeSave」方法。 我只是使用一個線程(並嘗試任務和task.factory),但它總是說相同的錯誤。c#excel先行線程
代碼。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.WorkbookBeforeSave += new Microsoft.Office.Interop.Excel.AppEvents_WorkbookBeforeSaveEventHandler(Application_WorkbookBeforeSave);
}// thisAddIn_startup method end
public void Application_WorkbookBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb, bool SaveAsUI, ref bool Cancel)
{
backendworker bwfs = new backendworker();// its a custom standalone class!
Task task1 = new Task(() => bwfs.MyBeforeSave(this.Application.ActiveWorkbook));
task1.Start();
}// application_workbookbeforesave method end
的backworker類:
public class backendworker
{
// BeforeSave method
public void MyBeforeSave(Microsoft.Office.Interop.Excel.Workbook Wb)
{
Wb.SaveCopyAs("c:\\temp\\temp.xls");
}// method end
}// class end
沒有線程(任何類型)它的好,它可以保存整個工作簿。 但是。與任何多線程結構拋出錯誤。 (異常來自HRESULT:0x800AC472)
任何想法我做錯了什麼?或想法如何解決它? :D
我不會建議嘗試訪問'應用程序'跨線程。 – climbage 2012-08-10 20:07:03
BeforeSave發生了什麼「太慢」 – 2012-08-10 20:08:18
似乎不推薦使用另一個線程,而是UI:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/9168f9f2-e5bc -4535-8d7d-4e374ab8ff09/ – danielQ 2012-08-10 20:16:55