2010-09-09 10 views
5

है मैं एक परीक्षण में निम्न कोड:कैसे सुरक्षित संभाल से बचने के लिए बंद कर दिया गया

private void LoadIncomeStatementViewModel() 
    { 
     using (var evt = new AutoResetEvent(false)) 
     { 
      EventHandler handler = (sender, e) => evt.Set(); 

      _incomeStatementViewModel.Loaded -= handler; 
      _incomeStatementViewModel.Loaded += handler; 
      _incomeStatementViewModel.LoadDataCommand.Execute(null); 
      evt.WaitOne(); 
     } 
    } 

अब अगर मैं निम्नलिखित परीक्षण

[Test] 
public void Test() 
{ 
    LoadIncomeStatementViewModel(); 
    // do something 

    LoadIncomeStatementViewModel(); 
    // do something 
} 

दूसरी बार LoadIncomeStatementViewModel (चलाने) कहा जाता है मुझे इवेंट हैंडलर हैंडलर = (प्रेषक, ई) => evt.Set() पर त्रुटि संदेश "सुरक्षित हैंडल का निपटारा किया गया है" मिलता है;

निश्चित रूप से उपयोग की गई कथन को फिर से शुरू किया गया है जब विधि दूसरी बार फिर से चालू हो जाती है। मुझे एहसास है कि यह रिशेर्पर टेस्ट रनर (नुनिट 2.7) के साथ कुछ करने के लिए हो सकता है ....

इस बारे में कोई विचार कैसे है?

धन्यवाद जेरेमी

उत्तर

3

आप नीचे के रूप में हैंडलर का लिंक हटाना होगा। अन्यथा दूसरे भाग में आपको पहला उदाहरण प्राप्त हो रहा था।

private void LoadIncomeStatementViewModel() 
{ 
    using (var evt = new AutoResetEvent(false)) 
    { 
     EventHandler handler = (sender, e) => evt.Set(); 

     try 
     { 
      _incomeStatementViewModel.Loaded += handler; 
      _incomeStatementViewModel.LoadDataCommand.Execute(null); 
      evt.WaitOne(); 
     } 
     finally 
     { 
      _incomeStatementViewModel.Loaded -= handler; 
     } 
    } 
} 
+0

जिसने मेरी समस्या हल की, धन्यवाद! – joerage

संबंधित मुद्दे