0

私のプロジェクトでは、インターネットアクセスを特定の時間に完全にブロックできますが、現在の日付です。タイマーを使用してこれを行いました。このタイマーは、開始時刻と終了時刻をチェックし、ユーザーが指定した開始時刻と終了時刻を使用して、5 秒ごとにインターネット接続の無効化と有効化を制御します。今、私は現在の日付だけでなく、別の日に同じことをしたいと思っています。その特定の日付に対してユーザーが無効/有効な時間間隔を指定した場合、タイマーで1日の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. 1 日に複数回許可される可能性があります。
  2. ネットワーク アクセスが許可されていないときはいつでも無効になります。

  3. Dictionary<DateTime, List<Tuple<DateTime, DateTime>>>許可された日付と時刻を構造体に保存します。
  4. その構造は、日付、許可された時間のリスト (開始と終了) を表します。
  5. 各日は個別に追加されます (1 日につき 1 つの辞書キーが許可されます)。

いくつかの合理化により、辞書構造を持つ必要がなくなり、代わりに開始時間と終了時間のみを使用できる可能性があります。

于 2012-12-28T22:59:50.697 に答える