如何停止频繁调用函数

时间:2016-11-21 07:06:42

标签: c#

有一个功能可以用硬件密钥检查许可证。但是这个函数经常被调用并且需要时间来执行。所以为了避免过多的电话,我想在一段时间后检查许可证。

bool CheckLicense()
{
    if(license checked in last 10 secconds)
    {
        return last status;
    }
    else 
    {
        hardware access for license check
        return current status
    }
}

编辑:可能会删除硬件密钥,因此检查一次不是好习惯。还要调用许可证检查以启用和禁用不同的按钮状态。

4 个答案:

答案 0 :(得分:8)

一般来说,我认为你需要这样的东西。

private DateTime lastCheckTime = DateTime.Now.AddDays(-1);

bool CheckLicense()
{
    if (lastCheckTime.AddSeconds(10) < DateTime.Now)
    {
        return last status;
    }
    else 
    {
        lastCheckTime = DateTime.Now;

        // hardware access for license check
        return current status   
    }
}

答案 1 :(得分:0)

如果您想每10秒调用一次,则可以使用以下内容:

localStorage.getItem("lastname", "Smith");

您在代码中调用一次,然后每隔10秒调用一次。

答案 2 :(得分:0)

每10秒检查一次许可证肯定会增加许多相同功能的调用。您可以在评论中建议的程序启动时执行一次,而如果您确实需要检查许可证或在每隔一段时间后调用一个函数,您实际上可以增加时间,以便您知道已检查许可证和电话会减少。

例如,您在程序启动时首次检查许可证的时间大于此时间约为10秒,然后将时间间隔增加10*2,这将比下一次增加20 20*2这将变为40,这将减少电话,你将每隔几次检查一次。

bool CheckLicense()
{
    timelimit = 300;
    if(seconds > timetocheck)
    {
        return last status;
        timetocheck *= 2;
        if(timetocheck >= timelimit)
        { 
           timetocheck = 10;
        }
    }
    else 
    {
        hardware access for license check
        return current status
    }
}

该程序只是一个原型,并不意味着直接运行它也没有谈论数据类型和语法。这只是为了理解能力。

答案 3 :(得分:0)

如果您正在同步进行此检查。代码,您可能想要运行新线程。如果许可证存在问题,单独的线程将通过事件通知您的主线程:

{{1}}