c# - How to automate task of consuming webservice -
मेरे पास एक winform application है जिसे वेब सेवा का उपभोग करने की जरूरत है । किसी भी परिवर्तन के लिए डेटाबेस में वेब सेवा चेक यदि डेटाबेस में कोई परिवर्तन है तो Winform आवेदन को अधिसूचित किया जाना चाहिए और इसके अनुसार कुछ कार्य निष्पादित किए जाएंगे। मैं यह कैसे करूँ? मैंने अपने विनफ़ॉर्म आवेदन में टाइमर का उपयोग करने के बारे में सोचा और हर 5 मिनट एक वेब सेवा से जुड़ने के बाद और जांचें कि क्या डाटाबेस में नए बदलाव किए गए हैं या नहीं। इसके लिए कोई अन्य तरीका क्या है? अपडेट: मैं यहां कोड पोस्ट के आधार पर पोस्ट कर रहा हूं: class PerformTasks { <पूर्व> अब सब कुछ 1 कार्य के अलावा ठीक काम करता है i.ई popMessage (शीर्ष पर कोड स्निपेट)। यहां प्रपत्र खोला गया है लेकिन यह हमेशा लोड हो रहा है। समय का उपयोग करने से पहले यह ठीक काम करता था मैं इसे कैसे संभाल सकता हूं? यह एकमात्र रास्ता है, खासकर अगर वेब सेवा नहीं है WCF- आधारित या यदि आप इसे संशोधित नहीं कर सकते। यदि आप टाइमर का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप सिस्टम का उपयोग करें.टिमर्स.टिमर और निर्देशों का पालन करें ताकि यदि आपके पास वेब सेवा पर नियंत्रण है, तो आप खोजना चाह सकते हैं, जिससे आपको ग्राहकों से कॉलबैक करने की सुविधा मिलती है। । सार्वजनिक स्थिर बूल चेक इंप्रेशन {प्राप्त करें; सेट; } सार्वजनिक स्थिर शून्य InitializeWebService () {कोशिश {टाइमर = नई सिस्टम। टिमर्स। टिमर (2000); टाइमर। Elapsed + = OnTimedEvent; टाइमर। सक्षम = सत्य; }} निजी स्थिर शून्य कॉल सेवा () ((var सेवा = नया WebServiceSoapClient ()) का उपयोग कर {checkIfInProgress = true; कार्य 1(); task2 (); popMessage (); CheckIfInprogress = false; }} निजी स्थैतिक शून्य OnTimedEvent (ऑब्जेक्ट स्रोत, ElapsedEventArgs ई) {if (checkIfInProgress == false) {callService (); }} निजी स्थिर शून्य PpopMessage () {var फार्म = नया फ़ॉर्म {StartPosition = FormStartPosition.Manual, ShowInTaskbar = false, टेक्स्ट = "संदेश", आकार = नया आकार (500, 200),}; Var स्क्रीन = स्क्रीन.फ़ॉर्म पॉइंट (form.Location); लेबल lblteext = नया लेबल (); Lblteext.Text = "टेस्ट टेक्स्ट"; Lblteext.Dock = DockStyle.Fill; Lblteext.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; Form.MaximizeBox = false; form.Controls.Add (lblText); Form.Location = नया प्वाइंट (स्क्रीन। वर्किंग एरिया। राइट - फॉर्म वाईडथ, स्क्रीन। वर्किंग एरिया। बॉटम - फॉर्म। हाइट); form.Show (); } समाप्त हो जाए < / कोड> हैंडलर UI थ्रेड पर निष्पादित होता है इसके अलावा, जब टाइमर टिकी आपको शायद कार्यकर्ता थ्रेड (या टास्क, या एसिंक पद्धति का इंतजार करना चाहिए) सेवा कॉल बनाता है सेवा कॉल में प्रगति होने पर आप अपनी यूआई को अवरुद्ध नहीं करना चाहते हैं।
Comments
Post a Comment