У меня есть проект обработки исключений в моем приложении, который можно вызвать из любого места, чтобы показать пользователю, что есть проблема с системой. Все отлично работает, когда вызов сделан откуда-то в пользовательском интерфейсе, как и ожидалось. Когда я звоню из частей приложения без интерфейса, все зависает. У меня есть код, завернутый в потоки безопасных вызовов, и при переходе через них они не требуют вызова Invoke. Любая помощь очень ценится. Код ниже:
Внутри формы
void err_DispEvent(string text)
{
if (InvokeRequired)
{
Invoke(new Error.DisplayDelegate(err_DispEvent), new object [] {text});
}
else
{
this.Show();
}
}
Звонок из класса
public void FaultError(string errorMsg)
{
FaultForm fform = new FaultForm(errorMsg, "Internal Fault");
if (this.dispEvent != null)
{
dispEvent(errorMsg);
}
}
public event DisplayDelegate DispEvent
{
add { dispEvent += value; }
remove { dispEvent -= value; }
}
private event DisplayDelegate dispEvent;
public delegate void DisplayDelegate(string text);
Пример использования класса в приложении
ECDUExceptions.Error newError = ECDUExceptions.Error.getInstance();
newError.FaultError("Heater is not responding to function calls, it has been turned off");