У меня многопоточное приложение, использующее .NET 4.0. Иногда это приложение COM ссылалось на фриков и просто останавливалось.Как определить, запущено ли приложение COM?
Я хочу знать, как проверить, проверен ли этот процесс в вопросительной цепочке.
Пример:
Exert от основного приложения:
ThreadedApp app = new ThreadedApp();
System.Threading.Thread thread = new System.Threading.Thread(x => app.Start());
thread.Start();
Бизнес-объект оказывают:
class ThreadApp
{
public void Start()
{
COMobject app = new COMobject(); // <- COM interop that starts up the COM app
foreach (var item in items)
{
new ThreadProcess().Process(ref app, item);
}
}
}
class ThreadProcess
{
public void Process(ref COMobject app, SomeItem item)
{
if (app == IVE_DIED_AND_I_DONT_KNOW_WHY) // How do I check this?
{
app = new COMobject();
}
// Process stuff
}
}
Основное приложение может закрутить N число потоков и, следовательно, может закрутить N число приложение COMobject. Если вы посмотрите Диспетчер задач, вы увидите, что COMobject.exe указан для каждого потока.
Я пытаюсь уйти от блоков try/catch для повышения производительности, но не знаю, как проверить состояние COM-приложения из вызывающего потока.
Надеюсь, это имеет смысл и TIA.
Вы имеете в виду COM +? –
Да COM + объект/приложение ... –