habe hier ein App, welches mehrere Verzeichnisse auf Änderungen überwachen soll. Funktioniert soweit ganz gut. Nun möchte ich aber dynamisch den Inhalt verschiedener Verzeichnisse einer bestimmten Verzeichnistiefe auf Änderungen überwachen. Also ich habe z.b. ein Verzeichnis c:\tmp, in diesem werden mit der Zeit diverse Unterverzeichnisse erstellt, die zusätlich überwacht werden sollen, also c:\tmp\001; c:\tmp\002 usw.. Nun scheint ab einer bestimmten Verzeichnismenge, der Watcher keinen neuen dirs mehr zu überwachen. Scheinbar ist bei 63 Schluss. (Habs nur unter WinXP testen können) Brauche aber bestimmt mind 700. Ist das ein Bug oder gibt es einen Workaround dafür oder wie könnte ein andere Lösungsansatz für dieses Problem aussehen?
Hier mal etwas relevanter Code:
Code: Alles auswählen
DirLog::DirLog() : QWidget()
{
[...]
fileWatch = new QFileSystemWatcher();
fileWatch->addPath("c:\\test");
QDir dir("c:\\test");
dir.setFilter(QDir::Dirs | QDir::Hidden | QDir::CaseSensitive | QDir::NoDotAndDotDot);
// um sämtliche bereits vorhandenen Verzeichnisse zu adden
QStringList dirListOld = dir.entryList();
QStringList addToDirWatcher;
for (int i = 0; i < dirListOld.size(); ++i)
{
QString dirName = dirListOld.at(i);
addToDirWatcher << "c:/test/" + dirName;
}
fileWatch->addPaths(addToDirWatcher);
connect(fileWatch, SIGNAL(directoryChanged(const QString&)), this, SLOT(maguggn(const QString&)));
}