c# - Invoke WCF Method asynchronously -
मेरे पास निम्न समस्या है:
मेरी WCF-method इस तरह दिखता है
सार्वजनिक हस्तांतरण परिणाम & lt; bool & gt; ExecuteMyMethod (स्ट्रिंग जॉबनाम, संग्रह & lt; KeyValuePair & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; पैरामीटर) {कुछ करें; } संबंधित अनुबंध:
[ऑपरेशन कॉन्ट्रैक्ट] ट्रांसफर रिज़ल्ट & lt; bool & gt; ExecuteMyMethod (स्ट्रिंग जॉबनाम, कलेक्शन & lt; KeyValuePair & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; पैरामीटर); अब हमारे प्रोजेक्ट में एक प्रॉक्सी आवरण मौजूद है जिसके साथ आप असिंक्रोनस रूप से तरीकों का उपयोग कर सकते हैं और मुझे इसका उपयोग करना चाहिए:
सार्वजनिक शून्य InvokeAsync & lt; TArg1, TArg2 , TResult & gt; (एक्सप्रेशन एंड लेफ्टिनेंट; फ़ंक्शन & lt; IMyServiceClient, Func & lt; TArg1, TArg2, AsyncCallback, ऑब्जेक्ट, IAsyncResult & gt; & gt; शुरू मोड, अभिव्यक्ति & lt; Func & lt; IMyServiceClient, Func & lt; IAsyncResult, स्थानांतरणResult & lt; TResult & gt; & gt; endMethod, TArg1 arg1, TArg2 arg2, एक्शन & lt; कार्य & lt; स्थानांतरण रेशेल & lt; ट्रेसल्ट & gt; & gt; निरंतर एक्शन) {कुछ करो; } जब मैं अपनी पद्धति को इस तरह लागू करने की कोशिश करता हूं:
this.wrapper.InvokeAsync & lt; स्ट्रिंग, संग्रह & lt; keyvaluePair & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; , Bool & gt; (svc = & gt; svc.BeginExecuteMyMethod, svc = & gt; svc.EndExecuteMyMethod, "जॉबनाम", मापदंड, यह। कंटिन्यूएक्शन एक्शन); वीएस मुझे बता रहा है: 'IAsyncResult BeginExecuteMyMethod (स्ट्रिंग, संग्रह & gt ;, AsyncCallback, ऑब्जेक्ट)' हस्ताक्षर के साथ एक विधि की अपेक्षा की गई है
क्या आप कृपया मुझे बता सकते हैं कि मैं क्या गलत कर रहा हूं? मापदंड पैरामीटर प्रकार का है संग्रह & gt; मैं डब्लूसीएफ के लिए बहुत नया हूँ और वास्तव में पता नहीं है कि समस्या क्या है: (
अग्रिम धन्यवाद
संपादित करें
मैंने सत्यापित किया है कि [ऑपरेशन कॉन्ट्रैक्टएट्रीब्यूट (एसिंकपैंटन = सच्चा)] इस सेवा संदर्भ में BeginExecuteMyMethod विधि पर सेट है
Edit2 यह है कि आईएमआईएसएसएआरसीएलएन्ट का शरीर कैसा दिखता है <प्री> [सिस्टम। सेवामॉडेल.ऑपरेशन कॉन्टैक्टऍटिवेट (एक्शन = "http://tempuri.org/IMyService/ExecuteMyMethod", उत्तरएक्शन = "http: //Tempuri.org/IMyService/ExecuteMyMethod ")] ट्रांसफर रिज़ल्ट & lt; bool & gt; ExecuteMyMethod (स्ट्रिंग जॉबनाम, सिस्टम.क्लॉक्शंस। ऑब्जेक्टमॉडेल.कॉलक्शन & lt; माईसेवायर.केवायवाल पेअरऑफ़स्ट्रिंग स्ट्रिंग & gt; पैरामीटर); [System.ServiceModel.OperationContractAttribute (AsyncPattern = true, Action =" Http://tempuri.org/IMyService/ExecuteMyMethod ", उत्तरएक्शन =" http://tempuri.org/IMyService/ExecuteMyMethod ")] System.IAsyncResult BeginExecuteMyMethod (स्ट्रिंग जॉबनाम, सिस्टम। Collections.ObjectModel.Co llection & LT; MyService.KeyValuePairOfstringstring & gt; पैरामीटर, सिस्टम। ऐसिंक कॉलबैक कॉलबैक, ऑब्जेक्ट asyncState); TransferResult & LT; bool & gt; एंडएक्सएक्यूटमेइमथ (System.IAsyncResult परिणाम); BeginExecuteMethod पर विचार करें, मापदंडों का प्रकार है <
संग्रह & lt; keyValuePair & lt; स्ट्रिंग, स्ट्रिंग & gt; & gt; संग्रह & lt; KeyValuePairOfstringstring & gt; , लेकिन अगर आप अपने आवरण को देखते हैं, तो आप विभिन्न प्रकार के संग्रह & lt; > आरंभएक्सएक्यूट विधि IAsyncResult BeginExecuteMyMethod (स्ट्रिंग नौकरी, संग्रह & lt; KeyValuePairOfstringstring & gt; पैरामीटर, Async कॉलबैक कॉलबैक, ऑब्जेक्ट asyncState); InvokeAsync कॉल
this.wrapper.InvokeAsync & LT; स्ट्रिंग, संग्रह के & lt; KeyValuePair & LT; स्ट्रिंग, स्ट्रिंग & gt; & gt ;, bool & gt; (SVC = & gt; एसवीसी .जिनएक्सएक्यूटमेइमथ, svc = & gt; svc.EndExecuteMyMethod, "जॉबनाम", मापदंड, यह। कंटिन्यूएक्शन एक्शन);
Comments
Post a Comment