2010-05-08 19 views
5

संदेश बॉक्स को पॉप-अप करने के लिए, मैं MessageBox.Show(...) का उपयोग कर रहा हूं। मैं आमतौर पर एक आह्वान में कॉल लपेट:क्या मुझे संदेश बॉक्स कॉल करने की आवश्यकता है?

BeginInvoke (new Action (() => { 
    MessageBox.Show()); 
})); 

मैं हमेशा एक में MessageBox कॉल रैप करने के लिए की जरूरत है (मैं मूल प्रश्न का एक हिस्सा है जो elsewhere उत्तर दिया गया हटाया) (Begin-) Invoke अगर मैं एक गैर-जीयूआई थ्रेड से कॉल कर रहा हूं?

+0

मैंने प्रश्न 2 के बारे में एक नया प्रश्न जोड़ा। (Http://stackoverflow.com/questions/2819146/what-is-the-difference-between-invoking-and-begininvoking-a-messagebox) – mafu

उत्तर

1

संक्षिप्त उत्तर: हाँ, क्योंकि मैं इसे सबसे अच्छा अभ्यास मानता हूं।

लंबे समय तक जवाब:

आप एक स्थिति है जहाँ आप अपने आप को इस सवाल पूछने के लिए, लंबे समय में कम से कम नहीं है में नहीं करना चाहिए। आमतौर पर, सॉफ़्टवेयर के एक अच्छी तरह से डिज़ाइन किए गए टुकड़े में, आपने उपयोगकर्ता इंटरफ़ेस और "बाकी दुनिया" के बीच "गेटवे" को परिभाषित किया है, यह वह जगह भी होगी जहां आप उन घटनाओं को उठाते हैं जो जीयूआई को सूचित करते हैं कि कुछ करना है (BeginInvoke (EventRaiserMethod (पैरा) के माध्यम से))।

+0

एक डिज़ाइन बिंदु से देखने के लिए, यह बहुत उचित लगता है और मैं सहमत हूं। हालांकि, मुझे वास्तविक उत्तरों में भी रूचि है। – mafu

+0

कोई बेहतर जवाब नहीं है, एचएम ... लेकिन मैं कहूंगा कि आपका पहला प्रश्न (आवश्यकता के बारे में) ज्यादातर शैली और व्याख्या का सवाल है। प्रश्न यह है: क्या आप माइक्रोस्कोफ्ट हाथों में थ्रेड सुरक्षा का सवाल रखना चाहते हैं? क्या आपको पता है कि उनके पास वास्तव में "Invoke" है - उनके "MessageBox.Show (...)" में विधि रैपर पैटर्न - विधि? क्या होगा यदि वे बाद में करते हैं और बदलते हैं? दूसरे प्रश्न के बारे में: मैं थोड़ा आश्चर्यचकित हूं कि इससे कोई फर्क नहीं पड़ता। बाद में कोशिश करूँगा, यह बहुत दिलचस्प लग रहा है। – stormianrootsolver

+0

लगभग 2): संदेशबॉक्स में अपना संदेश पंप है, मुझे विश्वास है कि यह ज़िम्मेदार है। – mafu

0
  1. जहाँ तक मुझे पता है, जब तक आप MessageBox.Show करने के लिए कॉल आप यूआई धागे पर कॉल आह्वान करने के लिए है नहींं में स्वामी पैरामीटर की आपूर्ति नहीं है के रूप में।
    यही है, यदि आप मालिक पैरामीटर की आपूर्ति करते हैं तो आपको कॉल को MessageBox.Show पर कॉल करने के लिए मालिक को बनाया गया था।
    - कृपया मुझे ठीक कर लें मैं गलत -
  2. यही पर निर्भर करता है अगर आप यूआई धागा करना चाहते हैं निष्पादन जारी रखने के लिए या यदि आप चाहते हैं कि उसे अवरुद्ध MsgBox दिखाते हुए।
संबंधित मुद्दे