A quoi faut-il faire attention lors de la réimplémentation de la fonction notify
dans une application Qt multi-thread? Ceci est un exemple d'implémentation. Actuellement, il n'y a pas d'erreurs, mais je crains qu'une erreur puisse survenir car le multi-threading dans Qt utilise un slot de signal pour la communication qui utilise la fonction notify.QThread et implémentation de notify
TApplication::notify(QObject *receiver, QEvent *event)
{
bool returnValue(false);
try
{
returnValue = QApplication::notify(receiver, event);
}
catch (IExceptionBase& e)
{
if (!fMain.isNull())
{
//report error to output and file log
}
else
{
//report error to output
}
}
catch (...)
{
if (!fMain.isNull())
{
//report error to output and file log
}
else
{
//report error to output
}
}
return returnValue;
}
fMain
est un module avec fonctionnalité de reporting
La réimplémentation de 'notify' a été effectuée pour implémenter un puits d'exception" fourre-tout ". 'postEvent' n'aura rien à voir avec ça, parce que le gestionnaire d'évènement ne s'exécute pas dedans. –
@KubaOber: Doh. L'absence d'une signature de fonction et l'indentation du code m'ont troublé en ce qui concerne le but réel de l'auteur (par opposition à déclaré). Je vais réparer ma réponse. –