पर एकाधिक सेवाओं को शुरू करना मैं थ्रेड (पृष्ठभूमि में) पर प्रॉक्सी खोलने की कोशिश कर रहा हूं, थ्रेड प्रॉक्सी का एक नया उदाहरण बनाता है, सेवा की विधि को कॉल करता है और सेवा का निपटान करने के तुरंत बाद।धागे
यह सब एक धागे पर होता है:
var background = new Thread(() =>
{
var proxy = new AssignmentSvcProxy(new EndpointAddress(worker.Address));
try
{
proxy.Channel.StartWork(workload);
proxy.Dispose();
}
catch (EndpointNotFoundException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (CommunicationException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (TimeoutException ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
catch (Exception ex)
{
logService.Error(ex);
proxy.Dispose();
proxy = null;
}
}) { IsBackground = true };
background.Start();
मैं भले ही मैं CloseTimeout, OpenTimeout, ReceiveTimeout, SendTimeout के लिए अधिकतम करने के लिए समय समाप्ति की स्थापना की है हो रहा रुक-रुक कर टाइमआउट मुद्दों दिखाई दे रहा है।
मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि यह डिज़ाइन के अनुसार यह कोई मुद्दा नहीं है यानी धागे पर एक सेवा खोलना और इसे निपटाना?
संपादित करें:
प्रॉक्सी आंतरिक रूप से कस्टम प्रत्येक थ्रेड के लिए अलग अंतिमबिंदुओं पर बाध्यकारी साथ एक चैनल स्थापित करता है।
यह है कि आप "सेवा" की बात करते हैं, जहां मैं उम्मीद थी "प्रॉक्सी" थोड़ा भ्रामक है, उदाहरण के लिए "थ्रेड सेवा खोलता है" होना चाहिए "धागा मेरी सेवा के लिए प्रॉक्सी खोलता है", है ना? – Jeroen
क्षमा करें, मैंने अभी प्रश्न को अपडेट किया है, इसलिए मूल रूप से मेरी सेवा पहले से ही खुली है लेकिन हाँ प्रॉक्सी सिर्फ प्रॉक्सी को कॉल करती है। चैनल.स्टार्टवर्क (वर्कलोड); उस विशेष सेवा (जो पहले से ही स्वयं होस्ट किया गया है) - समझ में आता है? –
आप अपने प्रयास-पकड़ खंड में 'अंततः' जोड़ना चाहेंगे। अंततः एक अपवाद फेंक दिया गया है भले ही कोड निष्पादित करता है। आपकी समस्या के बारे में, मैं अनिश्चित हूं। मुझे यह भी विश्वास है कि कन्स्ट्रक्टर में बाध्यकारी पारित करना बुद्धिमान होगा। यह आपके टाइमआउट अपवाद का कारण हो सकता है। –