2
我的應用程序使用Word interop進行「主動報告」功能。當Word文檔從應用程序中啓動,我們設置的EventWaitHandle暫停應用程序(創造一個「模式」效果),直至關閉文檔:Word Interop:接近Word的事件
wh.WaitOne();
我們已經設置Word應用程序退出事件的事件,在這裏我們則設置等待的EventWaitHandle的應用程序繼續
wordGenerator.WordApplication.ApplicationEvents2_Event_Quit += WordApplication_ApplQuit;
private void WordApplication_ApplQuit()
{
wh.Set(); // signal that word has closed
wordGenerator.Dispose();
wordGenerator = null;
}
在此之後被調用時,應用程序然後讀取它存儲位置的文檔,並將其保存到我們的數據庫。所有作品都很棒。除非...用戶在文檔中進行更改,而不是CTRL + S,而是單擊關閉並獲得「您想保存更改」提示的提示。
在這種情況下,只要單擊Word中的關閉,就會觸發退出事件,但在保存更改的對話框存在的同時,Word仍處於打開狀態。當嘗試讀取文檔以保存到數據庫時,應用程序繼續運行並獲取IO異常「文檔正在被另一個進程使用」。即使等待和重試也不起作用,因爲看起來Word和應用程序正在彼此等待。
是否有另一個事件可以使用?我無法繞過警報並自動保存,因爲用戶可能不想保存。
你能得到Word的過程對象嗎? –