मैं सोच रहा था क्या बुला SendMessage (जो ब्लॉक) और WaitForSingleObject साथ संयोजन के रूप में PostMessage बुला के बीच का अंतर है। विचार?SendMessage बनाम PostMessage + WaitForSingleObject
उत्तर
SendMessage()
अस्वीकार कर दिया जा सकता है, अगर आप इसे COM कॉल के संदर्भ में कहते हैं, जहां COM ऑब्जेक्ट एसटीए में रहता है (कॉल संदेश पंप के माध्यम से प्रेषित होते हैं)। PostMessage()
COM अपार्टमेंट नियमों का पालन करने के लिए प्रतिबंधित नहीं है।
इसके अलावा, PostMessage()
खिड़की के संदेश कतार के अंत पर संदेश डालता है। SendMessage()
कतार को छोड़ देता है। आप रेमंड चेन के ब्लॉग The Old New Thing पर संदेश कतारों पर एक लंबी चर्चा पा सकते हैं।
मेरा मुद्दा यह है कि आंखों की तुलना में SendMessage()
और PostMessage()
के बीच अंतर के लिए और भी कुछ है। मैं वास्तव में रेमंड के ब्लॉग के माध्यम से जाने की सलाह देता हूं, क्योंकि उन्होंने पिछले कुछ वर्षों में कई गॉथस को कवर किया है।
PostMessage
और WaitForSingleObject
आप अतुल्यकालिक संदेश सेवा करने के लिए अनुमति देते हैं। आप एक संदेश भेज सकते हैं, अन्य चीजें कर सकते हैं, और बाद में उत्तर के लिए वापस जांच सकते हैं। SendMessage
तुल्यकालिक है और आपको प्रतीक्षा करने की आवश्यकता है।
मुझे लगता है कि मुझे यह उल्लेख करना चाहिए था कि मेरा लक्ष्य समकालिकता प्राप्त करना है। मैं PostMessage करता हूं और WaitForSingleObject को कॉल के साथ तुरंत पालन करता हूं। मुख्य परिचालन अंतर को हाइलाइट करने के लिए –
+1 - एक ईवेंट पोस्ट करना और उस पर प्रतीक्षा करने से कॉलर प्रसंस्करण जारी रखने की अनुमति देता है। यह उपयोगी हो सकता है यदि लक्ष्य थ्रेड प्रोसेसिंग में कुछ बाद के चरण में इंतजार करना है जब तक कि पिछले पोस्ट किए गए संदेश को जीयूआई थ्रेड में पूरी तरह से संभाला नहीं जाता है। –
मैं हमेशा सोचा था कि SendMessage अपने विंडोज़ प्रक्रिया सीधे कॉल, संदेश कतार लंघन है; जबकि PostMessage बस कतार में संदेश जोड़ता है।
यह निर्भर करता है कि क्या थ्रेड SendMessage() से कहा जाता है। इंटरथ्रेड कॉल हमेशा पंप के माध्यम से marshalled हैं, और सीधे Winproc को प्रेषित नहीं किया जाता है। –
SendMessage एक भी API कॉल, इसलिए कम अपने त्रुटियों की संभावना है। अपने आप को रोल करने के बजाय अंतर्निहित के साथ जाओ।
ऐसा नहीं है कि यह त्रुटियों के लिए कम प्रवण है। कार्य एक बहुत ही अलग अर्थपूर्ण उद्देश्य प्रदान करते हैं। एक या दूसरे का उपयोग करने की आपकी पसंद उस चीज़ पर आधारित होनी चाहिए जो आप पूरा करना चाहते हैं, न कि मैं यह कोड "काम" कैसे कर सकता हूं। –
"सेमेन्टिक्स" प्राकृतिक भाषाओं के लिए हैं। कोड वह कोड है, जो इसका मतलब नहीं है। –
नहीं, कोड पठनीयता, स्वयं-दस्तावेज, और एपीआई अनुबंधों का पालन करने के लिए अर्थशास्त्र। सिर्फ इसलिए कि कोड कुछ करता है इसका मतलब यह नहीं है कि यह हमेशा वही काम करना जारी रखेगा। और सिर्फ इसलिए कि कार्यान्वयनकर्ता जानता है कि कोड का क्या अर्थ यह नहीं है कि बाद के रखरखावकर्ता को पता चलेगा कि आपने पूरी तरह से गैर-स्पष्ट, अनजान तरीके से कुछ क्यों किया। –
- 1. SendMessage बनाम WndProc
- 2. नेट टाइमआउट्स: WaitForSingleObject बनाम टाइमर
- 3. WaitForSingleObject
- 4. WaitForSingleObject
- 5. SendMessage
- 6. SendMessage
- 7. क्रोम एक्सटेंशन - onRequest/sendRequest बनाम onMessage/SendMessage
- 8. "SendMessage" (vb.net)
- 9. PostMessage (hwnd, WM_SETTEXT, ..) पोस्टमेसेज (hwnd, WM_QUIT, ..) करता है, जबकि
- 10. "मशीन नींद" + WaitForSingleObject + परिमित टाइमआउट
- 11. एक फ़ाइल हैंडल पर WaitForSingleObject?
- 12. SendMessage (HWND_BROADCAST लटकी हुई है
- 13. SendMessage संदेश संख्या का स्पष्टीकरण?
- 14. SendMessage के LParam को कैसे बनाएँ WM_KEYDOWN
- 15. संदेश को किस क्रॉसडोमेन iframe से जांचें (postMessage) आया था?
- 16. PostMessage के माध्यम से एक स्ट्रिंग कैसे भेजें?
- 17. html5 postMessage मेरे लिए क्यों काम नहीं कर रहा है?
- 18. iframe गतिशील ऊंचाई क्रॉस-डोमेन jquery.ba-postmessage का उपयोग कर
- 19. क्या WaitForSingleObject मेमोरी बैरियर के रूप में सेवा करता है?
- 20. कर सकते हैं एक भी SetEvent() ट्रिगर कई WaitForSingleObject()
- 21. सी #: पंजीकरण WaitForSingleObject का उपयोग करते हुए यदि ऑपरेशन पहले
- 22. क्यों WaitForSingleObject (INVALID_HANDLE_VALUE, अनंत) को ब्लॉक करता है?
- 23. WM_COPYDATA SendMessage - क्या यह बड़े तार भेज सकता है?
- 24. .NET इंटरऑप IntPtr बनाम रेफ
- 25. एचटीएमएल 5 - क्रॉस ब्राउज़र Iframe PostMessage - माता-पिता बच्चे को संचार
- 26. बनाम बनाम
- 27. : बनाम बनाम ::
- 28. स्पाइडरमोन्की बनाम जावास्क्रिप्ट बनाम बनाम?
- 29. Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार
- 30. LINQ बनाम लैम्ब्डा बनाम अज्ञात तरीके बनाम बनाम
आप समक्रमिकता कॉल SendMessage चाहते हैं। –