テストに次のコードがあります。
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() が 2 回目に呼び出されると、EventHandler handler = (sender, e) => evt.Set(); で「安全なハンドルが破棄されました」というエラー メッセージが表示されます。
メソッドが 2 回目に再実行されると、必ず using ステートメントによって evt が再初期化されます。これは、Resharper テスト ランナー (Nunit 2.7) と関係があるのではないかと感じています。