0

在我的项目中,我可以在特定时间但在当前日期完全阻止互联网访问。我通过使用计时器来做到这一点。该计时器检查开始时间和结束时间,并控制每 5 秒使用用户提供的开始时间和结束时间来禁用和启用互联网连接。现在我想在不同的日子里做同样的事情,不仅是在当前日期。如果用户为该特定日期提供了禁用/启用时间间隔,我想通过计时器在一天中的每 5 秒内检查每一天。

      if (currentDate == chosenDate)
        {
            if ((currenttime >= starttime) && (currenttime <= endtime))
            {
                timerForHour.Enabled = true;
                if (isConnectedToNetwork)
                {
                    findNetworkName();
                    Disable(networkName);
                }

            }
            else
            {
                exitFlag = true;
                Enable(networkName);
            }

        }

        else if(currentDate!=chosenDate)
        {

        }

这是我的代码,我将在 else if 部分做什么?谢谢。

4

1 回答 1

0

我认为你正在以错误的方式解决这个问题。不要用“是否是今天”来思考它,而是以更一般的方式思考它:“当天是否匹配,如果匹配,那么我们是否在可接受的时间范围内?”。在不了解如何存储您使用的日期/时间范围的更多信息的情况下,我可以使用 LINQ 提供以下内容:

IsInternetAllowed = false;
DateTime dateOfInterest = datesToRestrict
    .FirstOrDefault(dt => dt.Date == DateTime.Now.Date);
if (dateOfInterest != null)
{
    if (timesToAllowDict.ContainsKey(DateTime.Now.Date))
    {
        List<Tuple<DateTime, DateTime>> lstAllowed = 
            timesToAllowDict[DateTime.Now.Date];

        IsInternetAllowed = lstAllowed  
            .FirstOrDefault(time => 
                DateTime.Now.Time > time.Value1 &&
                DateTime.Now.Time < time.Value2) != null;
    }
}

if (IsInternetAllowed)
    Enable(networkName);
else
    Disable(networkName);


我对您的数据做出以下假设:

  1. 每天可能允许多次。
  2. 任何时候不允许网络访问,它都会被禁用。
  3. 您将允许的日期和时间存储在
    Dictionary<DateTime, List<Tuple<DateTime, DateTime>>>结构中。
  4. 该结构表示日期,允许的时间列表(开始然后结束)。
  5. 每天单独添加(每天允许一个字典键)。

很可能通过一些简化,您可以消除对字典结构的需要,而只使用开始和结束时间。

于 2012-12-28T22:59:50.697 回答