मैं एक कस्टम .net हार्डवेयर ढांचा तैयार कर रहा हूं जिसका उपयोग अन्य प्रोग्रामर द्वारा कुछ हार्डवेयर को नियंत्रित करने के लिए किया जाएगा। वे हमारे हार्डवेयर ढांचे को पाने के लिए हमारे डीएलएल का संदर्भ जोड़ देंगे। मुझे एक साझा कक्षा की आवश्यकता है जिसे एकाधिक अनुप्रयोगों (प्रक्रियाओं) से एक्सेस किया जाएगा।क्या डीएलएल के अंदर सिंगलटन क्लास प्रक्रियाओं में साझा की जा सकती है?
सिंगलटन पैटर्न मुझे लगता है कि यह आवश्यक है लेकिन यह केवल आपकी प्रक्रिया के अंदर कई धागे के लिए काम करता है। मैं पूरी तरह गलत हो सकता हूं लेकिन यहां वर्तमान में सी # कोड का एक उदाहरण है। मैं यह महसूस करने में मदद नहीं कर सकता कि डिजाइन गलत है। काश मैं अधिक विशिष्ट जानकारी साझा कर सकता हूं लेकिन मैं नहीं कर सकता।
- मुझे इस बात पर जोर देना चाहिए कि ग्राहक के आवेदन पर मेरा कोई नियंत्रण नहीं होगा। समाधान ढांचे (डीएलएल) के अंदर ही होना चाहिए।
फ्रेमवर्क (साझा DLL)
public class Resources
{
static readonly Resources m_instance = new Resources();
public string Data;
private Resources()
{
Data = DateTime.Now.ToString();
}
public static Resources Instance
{
get
{
return m_instance;
}
}
}
टेस्ट आवेदन:
: (अंततः खरीदार ऐप)class Program { static void Main(string[] args) { Console.WriteLine("Press enter to capture the resource!"); Console.ReadLine(); var resources = Resources.Instance; Console.WriteLine("\r\n{0}: {1}\r\n", Thread.CurrentThread.ManagedThreadId, resources.Data); BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += WorkerDoWork; worker.RunWorkerAsync(); while (worker.IsBusy) { Thread.Sleep(100); } Console.WriteLine("Press enter to close the process!"); Console.ReadLine(); } static void WorkerDoWork(object sender, DoWorkEventArgs e) { var resources = Resources.Instance; Console.WriteLine("\r\n{0}: {1}\r\n", Thread.CurrentThread.ManagedThreadId, resources.Data); } }
पहले शुरू आवेदन के उत्पादन देता है
संसाधन को कैप्चर करने के लिए एंटर दबाएं!
1: 2009/06/24 08:27:34
3: 2009/06/24 08:27:34
प्रेस प्रक्रिया को बंद करने में प्रवेश! संसाधन पर कब्जा करने में प्रवेश
प्रेस:
दूसरा आवेदन के उत्पादन देता है!
9: 2009/06/24 08:27:35
10: 2009/06/24 08:27:35
प्रेस प्रक्रिया को बंद करने में प्रवेश!
निष्कर्ष:
मैं दोनों अनुप्रयोगों कक्षा के पहले इन्स्टेन्शियशन के समय का एक ही स्ट्रिंग लौटाने देखना चाहेंगे।
जैसा कि आप देख सकते हैं कि सिंगलटन प्रक्रिया के अंदर एकाधिक धागे के लिए काम करता है लेकिन प्रक्रियाओं को पार नहीं करता है। शायद यह नहीं किया जा सकता है क्योंकि मुझे कोई समाधान नहीं मिल रहा है।
मैं तनाव होना चाहिए कि मैं लूंगा ग्राहक आवेदन पर कोई नियंत्रण नहीं है। समाधान ढांचे (डीएलएल) के अंदर ही होना चाहिए। –