It’s hard to build a reliable add-in with UI and the hardest one is unhandled UI exception.
Image a Tool Window add-in.
The frame of Tool Window is constructed by host with dock ability. The content of it is in add-in side and is exposed to 3<SUP>rd</SUP>
parties to be customized. The quality of 3<SUP>rd</SUP> party’s code is out of control and there are some unhandled exceptions hidden in their code, especially UI exception . How can I do?
As we known, there are 3 ways to activate add-ins:
Its own appdomain;
The first 2 approaches can’t help me. If a UI exception is thrown, e.g.: during Click event handler, I can’t know it is an add-in exception and,
as a result, the whole application will crash.
So I try the 3<SUP>rd</SUP> and last one. At the beginning, everything seems OK. I can subscribe unhandled exception event handler
of Application and do some cleaning up code, if User Control throws some UI exceptions and shut down AddInProcess gracefully. But I find that I can’t create Tool Window from add-in side anymore in the case.
When I call back form add-in to create a Tool Window, because I am call from an external process, the host will fetch a thread from thread pool
to create the Tool Window. Any threads from thread pool are MTA thread and can’t create UI components at all. I almost fall in a faint and can’t believe it.
I check with Visual studio. Visual studio loads add-in into its own appdomain and UI exception form add-in will crash Visual studio, too.
I hope I am misunderstanding on this topic and can get the right answer here.