क्योंकि आप आसानी से डेडलॉक (अन्य मुद्दों के बीच) के साथ समाप्त हो सकते हैं।
Exmaple के लिए, आपका माध्यमिक धागा यूआई नियंत्रण को अद्यतन करने का प्रयास कर रहा है, लेकिन यूआई नियंत्रण द्वितीयक थ्रेड द्वारा लॉक किए गए संसाधन के लिए इंतजार कर रहा है, इसलिए दोनों धागे एक दूसरे के लिए इंतजार कर रहे हैं। जैसा कि अन्य ने टिप्पणी की है कि यह स्थिति यूआई कोड के लिए अद्वितीय नहीं है, लेकिन यह विशेष रूप से आम है।
सी ++ जैसी अन्य भाषाओं में आप कोशिश करने और ऐसा करने के लिए स्वतंत्र हैं (बिना किसी अपवाद के WinForms के रूप में फेंक दिया जा सकता है), लेकिन आपका एप्लिकेशन फ्रीज हो सकता है और प्रतिक्रिया देना बंद कर देना चाहिए।
संयोग से, आप यूआई थ्रेड को आसानी से बता सकते हैं कि आप एक नियंत्रण को अपडेट करना चाहते हैं, बस एक प्रतिनिधि बनाएं, फिर उस प्रतिनिधि पर (एसिंक्रोनस) BeginInvoke विधि को अपने प्रतिनिधि को पास कर दें। जैसे
myControl.BeginInvoke(myControl.UpdateFunction);
यह एक कार्यकर्ता थ्रेड से सी ++/एमएफसी पोस्टमेसेज करने के बराबर है