issue with data receiving C# + arduino

Hi there.
I'd like to know how to receive data from arduino using C#.
Here comes my arduino code:

int switchPin = 7;
int ledPin = 13;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean flashLight = LOW;

void setup()
{
  pinMode(switchPin, INPUT);
  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);
}

boolean debounce(boolean last)
{
  boolean current = digitalRead(switchPin);
  if (last != current)
  {
    delay(5);
    current = digitalRead(switchPin);
  }
  return current;
}

void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    Serial.println("UP");

    digitalWrite(ledPin, HIGH);
  }

After pressing button device sends "DOWN" or "UP" to the PC.
Here comes my C# code but it doesn't work. Help, please!

    namespace Morse_Device_Stuff
{
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private SerialPort port;


        private bool recordStarted = false;

        private void recordButton_Click(object sender, RoutedEventArgs e)
        {

            SerialPort port = new SerialPort("COM3", 9600);
            port.Open();
            recordStarted = !recordStarted;
            string lane;

            if(recordStarted)
            {

                (recordButton.Content as Image).Source = new BitmapImage(new Uri("stop.png", UriKind.Relative));


                port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

            }

            else
            {
                (recordButton.Content as Image).Source = new BitmapImage(new Uri("play.png", UriKind.Relative));
            }

            port.Close();
        }

        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            textBox.Text += port.ReadExisting();
        }
    }
}

You should start, on the Arduino side, with something much simpler. Right now, you don't know whether your switch is wired correctly, or coded properly. Dump all that crap, and simply have loop() write to the serial port once per second. Write the value of millis(), so you can see it changing.

In the C# application, you have major problems. Serial data handling should be done in a separate thread from the UI, not in the same thread.

Send me a private message, containing an e-mail address, and I'll send you a C# application that uses a separate thread for the serial data processing, that has inter-thread communication to allow updating the UI.