Remplacer un while par un thread
Bonjour,
J'utilise winpcap qui utilise un while pour la capture de paquets, j'ai donc mis un qApp->processEvents(); pour eviter que l'application se bloque,
je voulais savoir si je pouvait le mettre dans un thread, mais la question que je me pose,
si je le met dans un thread je vais avoir le meme probleme, l'application se bloquera je suppose?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
while ((res = pcap_next_ex(adhandle, &header, &pkt_data)) >= 0){
qApp->processEvents();
if (CaptureStop)
break;
if (res == 0)
// Timeout elapsed
continue;
++nPacket;
if (header->caplen == 0)
break;
dataLength += header->caplen;
if (res == -1){
print_error(QString("Error reading the packets: %1 ").arg(pcap_geterr(adhandle)));
break;
}
print_status1(QString("%1 Packets Captured | Length: %2 | Total Length: %3 ").arg(QString::number(nPacket)).arg(QString::number(header->caplen)).arg(QString::number(dataLength)));
packet_handler(NULL, header, pkt_data, (unsigned char *)dumpfile);
} |
Comment faire pour que l'application ne se bloque pas ?