想在保存Word文档后,将内容提交到数据库,但只找到一个Word.Application.DocumentBeforeSave事件,所以就在该事件的处理函数中,使用BackgroundWorker来异步执行保存到数据库的操作.代码如下:
_wordApp_DocumentBeforeSave(Document doc, , )
{
backgroundWorker1.RunWorkerAsync(doc);
}backgroundWorker1_Dowork(object sender, DoWorkEventArgs e)
{
while(doc.Saved) /*问题在这里*/
{
Threading.Sleep(100);
} DoSave();
}这样处理后,直接在Word应用程序里保存是没有问题的,但如果保存之前直接关闭Word进程或Document窗口,会弹出是否保存的对话框,这是点击保存后,Word进程或Document很快就会关闭,因此当程序执行到DoWork事件处理函数时,检查doc.Saved的值时就会抛出无效转换异常,大致原因应该是此时doc对象已经不存在了,各位有什么方法来解决这种形式的保存吗?如果您有些思路和经验,但不太理解我的问题,请不辞劳苦,及时回馈给我,我会进一步解释的,谢谢各位.
_wordApp_DocumentBeforeSave(Document doc, , )
{
backgroundWorker1.RunWorkerAsync(doc);
}backgroundWorker1_Dowork(object sender, DoWorkEventArgs e)
{
while(doc.Saved) /*问题在这里*/
{
Threading.Sleep(100);
} DoSave();
}这样处理后,直接在Word应用程序里保存是没有问题的,但如果保存之前直接关闭Word进程或Document窗口,会弹出是否保存的对话框,这是点击保存后,Word进程或Document很快就会关闭,因此当程序执行到DoWork事件处理函数时,检查doc.Saved的值时就会抛出无效转换异常,大致原因应该是此时doc对象已经不存在了,各位有什么方法来解决这种形式的保存吗?如果您有些思路和经验,但不太理解我的问题,请不辞劳苦,及时回馈给我,我会进一步解释的,谢谢各位.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货