c# - MS Interop Word, Excel multiple opened files DocumentBeforeClose handling -


i have module windows explorer in app. want handle opening , closing word , excel files in module. when i'm opening f.e. 4-5 files @ same time, close handler doesn't work correctly.

the problem is: after closing word app, app not stopping on breakpoint @ beginning of worddocevents_documentbeforeclose function. seems related inter process communication, because every opened document new process.

if known issue please help, otherwise i'll try in codes.

code snapshot:

if (_wordapp == null) {     _wordapp = new word.application();     _worddocevents = (word.applicationevents4_event)_wordapp;     if (!islocked)     {         //_worddocevents.quit += new word.applicationevents4_quiteventhandler(worddocevents_quit);         _worddocevents.documentbeforeclose += new word.applicationevents4_documentbeforecloseeventhandler(worddocevents_documentbeforeclose);         _worddocevents.documentbeforesave += new word.applicationevents4_documentbeforesaveeventhandler(worddocevents_documentbeforesave);         _wordapp.displayalerts = word.wdalertlevel.wdalertsnone;     } } _wordapp.visible = true; word.document odoc = _wordapp.documents.open(filename, null, islocked);  odoc.activate(); _wordapp.visible = true; _wordapp.activate(); 

close handler:

void worddocevents_documentbeforeclose(word.document doc, ref bool cancel) {     if (!doc.saved)     {         messageboxresult res = messagebox.show(applicationvalues.getresourcestring("library_file_save_changes"), "", messageboxbutton.yesnocancel, messageboximage.question, messageboxresult.yes, system.windows.messageboxoptions.defaultdesktoponly);         switch (res)         {             case messageboxresult.yes:             doc.save();                 break;             case messageboxresult.no:                 doc.saved = true;                 break;             default:                 cancel = true;                 return;         }     }     interopfilebeforeclosehandler(doc.fullname, doc.readonly);  } 

this older one, figured out after finding thread @ msdn: workbookbeforeclose-event-does-not-fire

so rather easy solution store created/loaded documents array/list/... garbage collector doesn't dispose them, when thinks needs so, clearing event handlers.

worked charm me ;)


Comments

Popular posts from this blog

PHPMotion implementation - URL based videos (Hosted on separate location) -

javascript - Using Windows Media Player as video fallback for video tag -

c# - Unity IoC Lifetime per HttpRequest for UserStore -