Hi.
I want to move write to DB operation to another thread (from the GUI thread).
And I implemented the following QRunnable:
//// SourcesLogWritter//class SourcesLogWritter : public
QRunnable{public: SourcesLogWritter() { setAutoDelete(
false ); } void setData( const QDateTime & dateTime, const
QString & channelName, Como::Source::Type type, const
QString & sourceName, const QString & typeName, const
QVariant & value, const QString & desc ) { m_dateTime =
dateTime; m_channelName = channelName; m_type = type;
m_sourceName = sourceName; m_typeName = typeName;
m_value = value; m_desc = desc; } void run() {
QSqlQuery insert( QLatin1String( "INSERT INTO
sourcesLog ( dateTime, channelName, type, " "sourceName,
typeName, value, desc ) " "VALUES ( ?, ?, ?, ?, ?, ?, ? )" )
); insert.addBindValue( dateTimeToString( m_dateTime ) );
insert.addBindValue( m_channelName ); insert.addBindValue( (int)
m_type ); insert.addBindValue( m_sourceName );
insert.addBindValue( m_typeName ); insert.addBindValue(
m_value.toString() ); insert.addBindValue( m_desc );
insert.exec(); }private: QDateTime m_dateTime; QString m_channelName;
Como::Source::Type m_type; QString m_sourceName; QString m_typeName;
QVariant m_value; QString m_desc;}; // class SourcesLogWritter
Is it OK to launch this runnable every time when I need to write to the log?
I do the following:
d->m_sourcesLogWritter->setData( dateTime, channelName, type, sourceName,
typeName, value, desc );QThreadPool::globalInstance()->start(
d->m_sourcesLogWritter.data() );
And what if previous operation is still not finished and I will launch another?
Thanks.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest