TIME_KILL_SYNCHRONOUS是什么意思?

时间:2014-05-01 07:11:02

标签: c# winmm

我为多媒体计时器写了一个C#包装器: Start方法使用用户指定的回调调用timeSetEventStop方法只调用timeKillEvent

我有一个单元测试,应该检查Stop是否有效:

using (var timer = new HighResolutionTimer(20))
{
    int counter = 0;
    timer.Elapsed += (s, e) => Interlocked.Increment(ref counter);
    timer.Start();
    Thread.Sleep(40);
    timer.Stop();
    //Thread.Sleep(10);
    int old = counter;
    Assert.AreNotEqual(0, old);
    Thread.Sleep(40);
    Assert.AreEqual(old, counter);
}

我的问题是有时候这个测试失败了,因为在我调用Stop之后事件又发生了一次。我尝试在创建时添加TIME_KILL_SYNCHRONOUS标志,但它似乎不起作用。 我无法从文档中理解应该做什么。根据MSDN:

  

使用TIME_KILL_SYNCHRONOUS创建一个事件   TIME_CALLBACK_FUNCTION标志可防止事件发生   调用timeKillEvent函数。

这是否意味着任何未决事件都不会被执行?或者更确切地说,在执行所有待处理事件后,timeKillEvent方法可能不会返回?

我在网上搜索但找不到答案。

无论如何,这对我的测试没有帮助。我可以让我的测试始终通过的唯一方法是在致电Sleep后添加短Stop

0 个答案:

没有答案