gpt4 book ai didi

c# - CF 中的计时器不计时

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:25 29 4
gpt4 key购买 nike

我为使用 Compact Framework 的数据收集器开发软件。

我正在检查我正在调用的每个方法,我会计算这个方法执行所花费的时间。如果这个时间大于或等于 1 分钟,那么我将抛出异常。我有这个:

    public static TResult Call<TResult>(Func<TResult> closure)
{
int ellapsedSeconds = 0;
Timer timer = new Timer { Interval = 1000, Enabled = true };
timer.Tick += delegate
{
ellapsedSeconds++;
if (ellapsedSeconds < 60) return;
timer.Enabled = false;
throw new Exception(@"TimeOut Error Again!");
};

try
{
TResult result = closure.Invoke();
timer.Enabled = false;
return result;
}
catch (Exception)
{
timer.Enabled = false;
throw;
}
}

我知道还有其他方法可以检查,但我不打算改变这一点。我为您发布了我的问题域,但真正的问题是 Timer 不会触发滴答事件。它没有名为 .Start().Stop() 的扩展方法,就像桌面应用程序那样。并且 timer.Enabled = true; 不会开始计时。查看:

enter image description here

如何使用紧凑的框架启动计时器?

最佳答案

Timer 依赖于放置在调用者线程上的 Windows 消息泵。您不会以这种方式收到任何 TimerTick 事件。

请尝试使用 BeginInvoke 技术。这篇文章中描述了该技术 - Calling Synchronous Methods Asynchronously .

关于c# - CF 中的计时器不计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25685171/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com