Τα συμβάντα φορτώνονται και εκτελούνται στο κύριο νήμα και εάν το πρώτο συμβάν στο κύριο νήμα δεν έχει ολοκληρωθεί, έρχεστε στο δεύτερο συμβάν, όπως και άλλα προγράμματα στο κύριο νήμα, περιμένετε να ολοκληρωθεί η επεξεργασία του προηγούμενου πριν επεξεργαστείτε το επόμενο ή άλλο πρόγραμμα ή συμβάν στο κύριο νήμα.
Το παραπάνω είναι ότι ενθυλάκωσα μόνος μου ένα αντικείμενο και στο αντικείμενο ενθυλάκωσα μόνος μου ένα γεγονός.
Επεξεργάζομαι δεδομένα με τη μέθοδο εγγραφής σε συμβάντα, όπως το τμήμα σχολιασμού εικόνας,
Επειδή το συμβάν στο οποίο εγγράφηκα ήταν ένα αρχείο ανάγνωσης txt και το αρχείο txt μου είχε 50.000 γραμμές, με αποτέλεσμα η μέθοδος συμβάντος να ενεργοποιηθεί 50.000 φορές.
Στη συνέχεια, όταν έτρεξα το πρόγραμμα, διαπίστωσα ότι η διεπαφή μου ήταν σε κατάσταση αναστολής κινούμενων εικόνων και ήξερα ότι πρέπει να υπάρχει πρόβλημα εκεί.
Αρχικά νόμιζα ότι ήταν η χειραγώγηση των στοιχείων ελέγχου διεπαφής χρήστη στη μέθοδο που προκάλεσε ψεύτικο θάνατο.
Στη συνέχεια, βήμα προς βήμα, διαπιστώθηκε ότι κατά την προσθήκη δεδομένων στο σύνολο, είχε ήδη εισέλθει σε κατάσταση αναστολής κινούμενης εικόνας.
Γιατί??? Τέλος, έμαθα από το διαδίκτυο ότι το συμβάν βρίσκεται στο κύριο νήμα και εάν το πρώτο συμβάν δεν υποβληθεί σε επεξεργασία, θα εμποδίσει την εκτέλεση του επόμενου συμβάντος,
Γενικά κατάλαβα τι διέταξα, για να το θέσω ωμά, 50.000 συμβάντα προκάλεσαν τον αποκλεισμό του προγράμματος και μετά μπήκα σε κατάσταση αναστολής κινούμενων σχεδίων.
Λύση:
Για ορισμένα απλά συμβάντα, τα οποία δεν θα οδηγήσουν στην εκτέλεση μεγάλου αριθμού μεθόδων συμβάντων, μπορούν να γραφτούν απευθείας στη μέθοδο συμβάντων.
Για έναν μεγάλο αριθμό μεθόδων συμβάντων που ονομάζονται, ελπίζω να ανοίξετε ένα νήμα για να το αντιμετωπίσετε, όπως: socket ή httplistener, κ.λπ. (ο όγκος των δεδομένων είναι μικρός και δεν μπορείτε να το δείτε, όταν ο όγκος των δεδομένων είναι μεγάλος, χαχα, θα πεθάνει απευθείας)
|