这很糟糕,很抱歉,
我是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
}
非常感谢!
答案 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的更新后,它可以检查是否已经过了十分钟并采取相应的行动。