DHT11 does not update constantly after getting IR signal

When I press a button on my IR remote I can either see celsius or fahrenheit, but it only updates the value when I press the button, not in a loop. It only shows one constant value and does not change until i press a button. I want it to update the temperature and humidity values automatically but I don’t know how to make that loop.

#include <boarddefs.h>
#include <IRremote.h>
#include <IRremoteInt.h>
#include <ir_Lego_PF_BitStreamEncoder.h>

#include <dht.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

dht DHT;

#define DHT11_PIN 7
const int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);
  lcd.begin(16, 2);
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  if (irrecv.decode(&results)) {
    switch (results.value) {
      case 0x40BDC936: //Keypad button "2"
        lcd.setCursor(0, 0);
        lcd.print("Temp: ");
        lcd.print(DHT.temperature);
        lcd.print((char)223);
        lcd.print("C");
        lcd.setCursor(0, 1);
        lcd.print("Humidity: ");
        lcd.print(DHT.humidity);
        lcd.print("%");
    }

    switch (results.value) {
      case 0x40BD49B6: //Keypad button "1"

        lcd.setCursor(0, 0);
        lcd.print("Temp: ");
        lcd.print(DHT.temperature * 1.8 + 32);
        lcd.print((char)223);
        lcd.print("F");
        lcd.setCursor(0, 1);
        lcd.print("Humidity: ");
        lcd.print(DHT.humidity);
        lcd.print("%");
    }
  }

  irrecv.resume();
  delay(2000);

}

If you want to use the IR code to switch between display types then separate the IR part from the display part. On receiving a code just set a variable, perhaps "displayType". Make sure you just check IF a code has arrived, you don't want to wait doing nothing until one turns up.

Then in a separate function do the DHT reading and display the result based on what displayType is set to.

Steve