保持函数在特定时间内处于活动状态,如果条件为真,则结束look \ function

时间:2013-04-27 17:11:22

标签: c#

这很糟糕,很抱歉,

我是C#的新手,所以我的问题可能是愚蠢的,再次抱歉。

我想要完成的是这样的事情:

            private void RivalAlive()
        // The Function Should be alive for 10min - if the condition is performed then the function need to die (quit) immediately, also if the 10min has passed without the condition beeing performed the function will die.
        {
            if (SmallHour == 5) // if condition is performed it need to execute the code in the condition and quit the function
            //Run Another Function Here
            //End the RivalAlive Function
        {
        }
            //If the Condition is False - keep with the loop every 1 sec till 10min has passed
        }

非常感谢!

2 个答案:

答案 0 :(得分:2)

考虑到您只想在接下来的10分钟内查看SmallHour的值,这是函数:

private void RivalAlive()
{
    DateTime S = DateTime.Now;

    while(DateTime.Now.Subtract(S).TotalSeconds < 600 && SmallHour !=5)
         System.Threading.Thread.Sleep(1000);

    if(SmallHour == 5)
         EnterYourFunction();
}

此功能将在接下来的10分钟内每隔一秒检查一次SmallHour的值。如果值为5,则退出。否则它将在10分钟后自动退出。

答案 1 :(得分:2)

继续运行while循环十分钟是不正确的,而是应该实现Observer模式以避免不必要的处理器周期。

某些对象正在跟踪“SmallHour”并更新它。该对象将是一个Observable对象,所有其他对象将注册,以便他们可以接收有关更新的信息。在您的情况下,Observer是包含RivalAlive()方法的对象。当可观察对象更新“SmallHour”时,它将通知其列表中的所有观察者。一旦Observer完成它的工作,它就可以从Observable中取消注册并“死掉”,或者你想到的逻辑。

我希望这就是你要找的东西。

查看谷歌上的观察者模式。 http://msdn.microsoft.com/en-us/library/ee817669.aspx (可能有比这个链接更好的例子)

编辑: 我忘了它需要检查的条件只有十分钟。它可以存储开始收听更改的时间。收到SmallHour的更新后,它可以检查是否已经过了十分钟并采取相应的行动。