मैं एक बहुप्रचारित सी # अनुप्रयोग पर काम कर रहा हूं जो डब्ल्यूसीएफ वेब सेवा का उपभोग कर रहा है। Webservice के कनेक्शन में एक विशिष्ट टाइमआउट होगा जिसे हम परिभाषित कर सकते हैं और उसके बाद यह बंद हो जाएगा। मैं सिंगलटन क्लास का उपयोग कर वेब सेवा से कनेक्शन स्टोर करना चाहता हूं।एक बहुप्रचारित सी # अनुप्रयोग में आलसी सिंगलटन
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LazySingleton
{
public class CLazySingleton
{
private static readonly Lazy<CLazySingleton> _instance
= new Lazy<CLazySingleton>(() => new CLazySingleton());
private static readonly object ThreadLock = new object();
public static string abc;
//I will use the service connection object in place of 'abc' in the application
//assume that 'abc' is storing the connection object
private CLazySingleton()
{ }
public static CLazySingleton Instance
{
get
{
if (abc == null)
{
lock (ThreadLock)
{
//Make the connection
abc = "Connection stored in this variable";
Console.WriteLine("Connection Made successfully");
return _instance.Value;
}
}
else
{
return _instance.Value;
}
}
}
}
}
मेरे सवाल कर रहे हैं: 1. इस कोड को कई की देखभाल करने में सक्षम हो सकते हैं
CLazySingleton ins = CLazySingleton.Instance;
string connection = CLazySingleton.abc;
नीचे सिंगलटन वर्ग के लिए कोड है: मैं इस प्रकार उदाहरण पाने के लिए कोशिश कर रहा हूँ धागे एक ही समय में उदाहरण प्राप्त करने की कोशिश कर रहे हैं? यह वर्तमान में मेरी सबसे बड़ी चिंता है। 2. क्या इसके लिए मेरे पास बेहतर समाधान हो सकता है? 3. क्या मुझे यहां 'लॉक' का उपयोग करने की ज़रूरत है या आलसी दृष्टिकोण का उपयोग करना उदाहरण प्राप्त करने की कोशिश कर रहे मल्टीथ्रेड का ख्याल रखता है?
किसी भी मदद की सराहना की जाएगी।
धन्यवाद!
जॉन स्कीट द्वारा इस लेख चेक बाहर, है। यह सिंगलटन पैटर्न पर चर्चा करने का अच्छा काम करता है। http://www.yoda.arachsys.com/csharp/singleton.html – juharr
मुझे आपके दृष्टिकोण पर कुछ संदेह हैं। कनेक्शन के लिए आपको सिंगलटन को बनाए रखने की आवश्यकता क्यों है? क्या कोई समस्या है यदि प्रत्येक थ्रेड को अपना प्रॉक्सी/कनेक्शन मिलता है? और चूंकि यह एक वेब सेवा है, इसलिए यदि आप कई कनेक्शन बनाते हैं तो मुझे कोई समस्या नहीं दिखती है। --- बेहतर समझने के लिए कि आपका 'कनेक्शन' किस तरह का ऑब्जेक्ट है? – thewpfguy
आपको लॉक की आवश्यकता नहीं है – Rafa