Το "φοβήσιμο" είναι που λες ότι δεν ξέρεις τί κάνει ο κώδικας. Αν δεν ξέρεις τί κάνει ο κώδικας, οποιαδήποτε επέμβαση είναι επικίνδυνη. Ποιός έχει γράψει αυτό τον κώδικα? Κάποιος άλλος στην ομάδα σου, κάποιος ξένος, είναι generated? Τί κάνει ο κώδικας? Όχι απλά "συμπιέζει" αλλά ποιές βιβλιοθήκες καλεί? Πειράζει controls σε κάποια φόρμα? Υποψιάζομαι ότι τη συμπίεση των αρχείων την κάνεις χρησιμοποιώντας κάποιο COM component, αλλά και πάλι δεν μας λες τί κάνεις.
Το CheckForIllegalCrossThreadCalls δεν έχει καμμία σχέση με αυτό που ψάχνεις πάντως, και καλό είναι να μην το πειράζεις και να το αφήνεις πάντα στο True. Αυτό που κάνει είναι να ελέγχει για μία απαγορευμένη ενέργεια, την προσπάθεια να πειράξεις ένα control από ένα thread διαφορετικό από αυτό που το δημιούργησε.
Όσο για το ίδιο το ContextSwitchDeadlock αν πρόσεξες είναι ένα MDA και όχι ένα κανονικό exception. Τα MDAs σε ειδοποιούν ότι κάτι περίεργο συμβαίνει στον κώδικα σου και δεν εμφανίζονται σε κώδικα παραγωγής. Προφανώς κάτι περίεργο συμβαίνει και πρέπει να το διορθώσεις, όχι όμως πειράζοντας διάφορα settings μέχρι να εξαφανιστεί. Ίσως αυτό που συμβαίνει να μην είναι πρόβλημα για την εφαρμογή σου, ίσως και όχι. Το post που σου έδωσε ο Mitsaras έχει μία πολύ καλή περιγραφή του τί είναι και τί σημαίνει το ContextSwitchDeadlock.
Καλό είναι μέχρι να καταλάβεις τί συμβαίνει να μην πειράξεις τον κώδικα σου, ειδικά αν δεν τον έχεις γράψει εσύ. Το να πειράζεις settings που δεν καταλαβαίνεις για να πετύχεις κάτι είναι συνταγή για καταστροφή. Ήδη πειράζοντας το CheckForIllegalCrossThreadCalls άφησες την εφαρμογή σου ανοιχτή για User Interface bugs.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos