हाय निपटान कैसे जब मैं निम्नलिखित कोड का उपयोग करें:ManualResetEvent
myManualResetEvent.Dispose();
संकलक इस त्रुटि देता है निपटान करने या रनटाइम पर सही तरीका यह कुछ scenerios में दुर्घटनाग्रस्त हो सकता है।
धन्यवाद।
हाय निपटान कैसे जब मैं निम्नलिखित कोड का उपयोग करें:ManualResetEvent
myManualResetEvent.Dispose();
संकलक इस त्रुटि देता है निपटान करने या रनटाइम पर सही तरीका यह कुछ scenerios में दुर्घटनाग्रस्त हो सकता है।
धन्यवाद।
.NET बेस कक्षा लाइब्रेरी के डिजाइनर explicit interface implementation का उपयोग कर Dispose
विधि लागू करने का फैसला:
private void IDisposable.Dispose() { ... }
Dispose
विधि निजी है और इसे कॉल करने का एकमात्र तरीका ऑब्जेक्ट को IDisposable
पर खोजना है जैसा आपने पाया है।
कारण यह हो जाने पर कुछ में Dispose
विधि का वर्णन करता है कि बेहतर कैसे वस्तु निपटान किया जाता है के नाम अनुकूलित करने के लिए है। एक ManualResetEvent
के लिए अनुकूलित विधि Close
तरीका है।
एक ManualResetEvent
निपटान करने के लिए आपके पास दो अच्छे विकल्प हैं। MSDN पर अप्रबंधित संसाधन ऊपर साफ करने के लिए
var myManualResetEvent = new ManualResetEvent(false);
...
// This will dispose the object.
myManualResetEvent.Close();
आप डिजाइन दिशानिर्देश कार्यान्वयन अंतिम रूप में खंड Customizing a Dispose Method Name में और अधिक पढ़ सकते हैं और निपटान कर सकते हैं:: IDisposable
का उपयोग करना:
using (var myManualResetEvent = new ManualResetEvent(false)) {
...
// IDisposable.Dispose() will be called when exiting the block.
}
या Close
बुला
Occasionally a domain-specific name is more appropriate than
Dispose
. For example, a file encapsulation might want to use the method nameClose
. In this case, implementDispose
privately and create a publicClose
method that callsDispose
.
This method is the public version of the IDisposable.Dispose method implemented to support the IDisposable interface.
the documentation, WaitHandle.Dispose()
और WaitHandle.Close()
के अनुसार बराबर हैं। IDisposable
इंटरफ़ेस हालांकि बंद करने की अनुमति देने के लिए मौजूद है। मैन्युअल रूप से (जैसे एक ManualResetEvent के रूप में) एक WaitHandle को बंद करने के लिए, आप बस Close
बजाय सीधे Dispose
उपयोग कर सकते हैं:
[...] This method is the public version of the IDisposable.Dispose method implemented to support the IDisposable interface.
मैं वहाँ कुछ अपने उदाहरण कोड के साथ गलत हो सकता है लगता है। यदि कंपाइलर सिस्टम को देता है। थ्रेडिंग। वाइटहैंडल। डिस्प्ले (बूल) 'इसके सुरक्षा स्तर के कारण पहुंच योग्य नहीं है। " त्रुटि आपको या तो myManualResetEvent का उपयोग करना था। (सही) का पर्दाफाश करें; या myManualResetEvent.Dispose (झूठा); myManualResetEvent नहीं। उद्देश्य(); –