Avoiding safe handle has been closed

I have the following code in a test:

 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();
        }
    }

Now, if I run the following test

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

   LoadIncomeStatementViewModel();
   // do something
}

The second time that LoadIncomeStatementModel () is called, I get the error message “Safe descriptor was deleted” in the EventHandler Handler = (sender, e) => evt.Set ();

Of course, the using statement reinitialized evt when the method was re-run a second time. I have a feeling that this could be due to the Resharper testing tester (Nunit 2.7) ....

Any thoughts on how to get around this?

Thanks Jeremy

+5
source share
1 answer

, . .

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;
        }
    }
}
+3

All Articles