Дополнение к Release COM Object in C#Высвобождение COM объектов в фоновом потоке
я заметил, что сохранение MailItem и освобождение является трудоемкой задачей. Итак, безопасно ли сделать следующее? (псевдокод ниже)
Thread 1 (main thread)
- Open 10 (different .msg files) - MailItems [List<MailItem> items]
- user works on them and want to save and close all of them with one click.
- On_save_All_click (runs on main thread)
- Do
- toBeClearedList.addAll(items);
- items.clear() [so that main thread cannot access those items]
- BG_Thread.ExecuteAsyn(toBeClearedList);
- End
Thread 2 (background thread) (input - List<MailItems>)
- foreach(MailItem item in input)
item.save();
System.Runtime.InteropServices.Marshal.ReleaseComObject(item)
- done
Я написал пару тестов и выглядит как его работа; Просто хочу знать, безопасно ли это сделать? «Высвобождение COM объектов в другом потоке, чем тот, в котором он был создан»
Благодарности
Karephul
Как вы сказали, единственное, чего я хочу достичь, это «ответный интерфейс». До тех пор, пока безопасно запускать другой поток и освобождать эти COM-объекты безопасно (без каких-либо нежелательных исключений), я хорош. (Я буду продолжать тестирование) – karephul