मुझे सिंगलटन पैटर्न के साथ कोई समस्या है।सी # सिंगलटन ऑब्जेक्ट के कई उदाहरण
यह वास्तव में अजीब है, लेकिन ऐसा लगता है कि मेरे सिंगलटन पैटर्न के दो या तीन उदाहरण हैं। मेरी वेबसाइट, टाइमर के साथ एक क्रिया साइट है और मैं अपने सिंगलटन ऑब्जेक्ट के साथ उन टाइमर और कीमतों को संभालने में कामयाब रहा हूं।
क्या हो रहा है कि कुछ लोग कुछ कीमतें देखते हैं, और अन्य लोग अलग-अलग नेटवर्कों में हमेशा अन्य कीमतें देखते हैं।
उदाहरण के लिए, मेरे कार्यालय में, मेरे लोग 0.56 सेंट पर कुछ नीलामी देखते हैं, हर कोई एक जैसा देखता है, लेकिन दूसरे नेटवर्क में, उदाहरण के लिए, मेरा घर, मुझे 0.55 सेंट दिखाई देता है और टाइमर के अलग-अलग मूल्य होते हैं।
यह कहकर, मैंने एक GUID उत्पन्न करके और अपनी लॉग फ़ाइल में लॉग इन करके, मेरे सिंगलटन का परीक्षण किया है। यहाँ कुछ कोड
public class Singleton
{
private static Singleton instance;
private static System.Threading.Mutex mutex;
System.Guid token;
private Singleton() {
token = System.Guid.NewGuid();
Logger.Log("New singleton Instance" + token.toString());
}
static Singleton()
{
instance = new Singleton();
mutex = new System.Threading.Mutex();
}
public static Singleton Acquire()
{
mutex.WaitOne();
return instance;
}
// Each call to Acquire() requires a call to Release()
public static void Release()
{
mutex.ReleaseMutex();
}
public void SomeAction()
{
Logger.Log(token.toString() + " - SomeAction");
}
}
इस कोड में है, मैं निर्माता से टोकन उत्पन्न, और एक नया सिंगलटन के निर्माण प्रवेश करें, फिर ... SomeAction
विधि में, मैं लॉग इन करें जो कि कार्रवाई कर रही है।
इसके बाद, हमने कुछ परीक्षण किए और लॉग फ़ाइल डाउनलोड की।
मेरे आश्चर्य के लिए, मुझे केवल एक "न्यू सिंगलटन इंस्टेंस ब्लै" दिखाई देता है जो सही है। लेकिन फिर, SomeAction
पर कई कॉल अलग-अलग GUIDs के साथ विधि, जो अजीब है।
मैंने जांच की है कि ऑब्जेक्ट केवल स्थिर निर्माता में बनाया गया है, और मैंने यह भी जांच की है कि कहीं भी मैन्युअल निर्माण नहीं है।
अधिक जानकारी के लिए, यह केवल मेरे उत्पादन सर्वर पर होता है, जो एक goDaddy होस्टिंग है। मैंने पूछा है कि मेरी वेबसाइट के लिए एक से अधिक एप्लिकेशन पूल हैं और वे कहते हैं कि केवल एक ऐप पूल है।
सुझाए गए अनुसार अपने सिंगलटन को लागू करने का प्रयास करें [यहां] (http://csharpindepth.com/Articles/General/Singleton.aspx)। –
मैं सोच रहा था कि आपने स्थिर कन्स्ट्रक्टर क्यों बनाया है? – FosterZ
हो सकता है कि आप कुछ निपटान लॉगिंग का उपयोग करके समस्या का निदान कर सकें और हर जगह कैच कैच जोड़ सकें। सौभाग्य। – CodingBarfield