这段代码只工作一次,也就是说,当用户在线和离线时。我想以这样一种方式循环,使它始终为我提供信息。如:在线11:00,离线11:30,在线11:45,离线12:00。
我怎么解决这个问题呢?
bool showed =false;
bool nshowd =false;
for (; ; )
{
//chech_online() <- this methods gives true if the person is online on FB
bool check_online =check_online();
if(check_online ==true && !showed)
{
Console.WriteLine("Online !!" +DateTime.Now);
showed = true;
}
else if(check_online ==false && !nshowd)
{
Console.WriteLine("OFFline !!" + DateTime.Now);
nshowd = true;
}
}发布于 2013-02-21 17:32:48
你可以做一个循环,并在每次迭代中休眠10分钟,等等?
bool toggle = false;
bool exitloop = false;
int checkinterval = 600; // time in seconds between check
while(!exitloop)
{
bool is_online = check_online();
if (is_online)
{
if (!toggle)
{
Console.WriteLine("Online!" + DateTime.Now.ToString();
toggle = true;
}
}
else
{
if (toggle)
{
Console.WriteLine("Offline!" + DateTime.Now.ToString());
toggle = false;
}
}
Thread.Sleep(checkinterval * 1000);
// it would be a good idea to allow a mechanism
// to exit from the infinite loop.
if (check_if_we_should_exit_loop())
{
exitloop = true;
}
}发布于 2013-02-21 17:32:04
为什么showed和nshowed是不同的变量?您不需要一个单独is_online变量,然后测试与check_online不同的变量吗
bool is_online = false;
for(;;)
{
bool check_online = check_online();
if (check_online != is_online)
{
// Online state has changed. Store the new state and log out
is_online = check_online;
if (is_online)
{
Console.WriteLine("Online !!" +DateTime.Now);
}
else
{
Console.WriteLine("Offline !!" +DateTime.Now);
}
}
}发布于 2013-02-21 17:40:26
因为showed和nshowd是互斥的,所以没有必要同时维护它们-这就是布尔变量的全部意义:
userShown = false
while true:
userOnline = check_online()
if userOnline && !userShown:
output "User is online"
userShown = true
else:
if !userOnline && userShown:
output "User is offline"
userShown = false
sleep a bit或者,您可以只保留最后一个状态,并仅在其更改时显示:
isOnline = check_online()
wasOnline = !isOnline
while true:
if isOnline != wasOnline:
output "User is ", (isOnline) ? "online" : "offline"
wasOnline = isOnline
sleep a bit
isOnline = check_online()这个特定的方法保证了初始消息的输出不受用户状态的影响。
https://stackoverflow.com/questions/14998651
复制相似问题