public void CheckSingleUseArgs() { // TestEvent2 var handled = false; var sender = new object(); EventHandler <TestEventArgs> handler = (x, args) => { handled = true; }; var argCount = 0; TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () => { ++argCount; return(new TestEventArgs()); }, ArgsUsageKind.UniqueInstance); Assert.Equal(0, argCount); TestEvent2 += handler; TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () => { ++argCount; return(new TestEventArgs()); }, ArgsUsageKind.UniqueInstance); Assert.True(handled); handled = false; TestEvent2.SafeInvoke(nameof(TestEvent2), sender, () => { ++argCount; return(new TestEventArgs()); }, ArgsUsageKind.UniqueInstance); TestEvent2 -= handler; Assert.Equal(2, argCount); }