Current VS Solution won't open until I replug Arduino UNO or press Reset

I've been working on a Visual Studio Windows Form Sketch for my Arduino, and lately if I run the VS sketch, I have to unplug the USB to the Arduino, the sketch will then appear, and I can plug the USB back to the Arduino and it works fine. I saw a similar post but theirs didn't open when mine does, Other Post. If I create a new blank sketch and run it, it opens fine without and unplugging.

This happened to me a few days ago, but it went away on its own, or at least I don't remember purposely doing anything to address it. Would there be any way for the Arduino to restrict my VS sketch from opening? Currently, I'm not trying to communicate between the two and I just want to work on the Visiual Studio sketch. Since I can create a blank sketch and it opens when I run it, I think it has something to do with Visual Studio.

As I was typing this I pressed the reset button and then run it, It opens fine. If I then close the form and run it again, it doesn't open. I think this means the it is the Arduino restricting access and not VS? So I have to press the reset button on the Arduino in order to get the sketch to open. Why?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Collections;

namespace WindowsFormsApp11
{
   public partial class Form1 : Form
    {
        SerialPort port = new SerialPort();
        public delegate void myDelegate(byte sData);
        //Boolean newData = false;
        public int color { get; private set; }
        char Startbyte = '{';
        char Endbyte = '}';
     

        public Form1()
        {
            InitializeComponent();
            String startmrk = Startbyte.ToString();
            String endmrk = Endbyte.ToString();
            bit0.Text = startmrk;
            bit6.Text = nullbyte;
            bit7.Text = endmrk;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
            port = new SerialPort("COM3");
            port.Open();
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            port.ReadExisting();
            port.Close();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
        }
        private void label4_Click(object sender, EventArgs e)
        {
        }
        private void label5_Click(object sender, EventArgs e)
        {
        }
        private void label7_Click(object sender, EventArgs e)
        {
        }
        private void LEDLabel_Click(object sender, EventArgs e)
        {
        }
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)    //Show the selected LED Value
        {
            String label1 = number1.Value.ToString();           //Generate the int to string to display
            display1.Text = label1;                             //display the string
        }
        private void number2_ValueChanged(object sender, EventArgs e)           //Show the Number of Blinks 
        {
            String label2 = number2.Value.ToString();           //Generate the int to string to display
            display2.Text = label2;                             //display the String
        }
        private void number3_ValueChanged(object sender, EventArgs e)           //Show the Duration of Blinks
        {
            String label5 = number3.Value.ToString();           //Generate the int to string to display
            display3.Text = label5;
        }
        private void number4_ValueChanged(object sender, EventArgs e)           //Show the Intensity of the Blink
        {
            String label6 = number4.Value.ToString();           //Generate the int to string to display
            display4.Text = label6;
        }
        private void number5_ValueChanged(object sender, EventArgs e)
        {
            String label7 = number5.Value.ToString();           //Generate the int to string to display
            display5.Text = label7;
        }
        private void display4_Click(object sender, EventArgs e)
        {
        }
        public int Colorselection(string label3, int color)                     //Set the LED Color and pin 
        {
            if (label3 == "Red")
            {
                color = 6;                                                      //Red:6
            }
            else if (label3 == "Green")
            {
                color = 5;                                                      //Green:5
            }
            else if (label3 == "Blue")
            {
                color = 3;                                                      //Blue:3
            }
            else if (label3 == "White")
            {
                color = 0;                                                      //White:0 ALL
            }
            return color;
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) //LED Selected to display
        {
            String label4 = LEDColor.SelectedItem.ToString();                   //Generate A string of selected Color
            int xled = Colorselection(label4, color);                           //Toggle the string into an int
            LEDLabel.Text = xled.ToString();                                    //Generate a string from the int
            bit1.Text = xled.ToString();
        }
         private void Stop_Click(object sender, EventArgs e)
        {
            port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
            port.Open();
            port.Write("Toggle");
            port.Close();
        }
        private void Run_Click(object sender, EventArgs e)                      //Generate byte to send instead of sending strings and int/byte
            {
                char SelectLED;
                char BlinkNumber;
                char BlinkDuration;
                char BlinkIntensity;
                char BlinkDelay;
                char Dur;

                String label5 = LEDColor.SelectedItem.ToString();               //Generate A string of selected Color
                int ledsel = Colorselection(label5, color);
                    SelectLED = Convert.ToChar(ledsel);
                byte RGBLED = Convert.ToByte(ledsel);
                byte BlinkNum = Convert.ToByte(number1.Value);
                    BlinkNumber = Convert.ToChar(BlinkNum);
                byte BlinkDur = Convert.ToByte(number2.Value);
                    BlinkDuration = Convert.ToChar(BlinkDur);
                byte BlinkInt = Convert.ToByte(number3.Value);
                     BlinkIntensity = Convert.ToChar(BlinkInt);
                byte BlinkDel = Convert.ToByte(number4.Value);
                    BlinkDelay = Convert.ToChar(BlinkDel);
                byte Duration = Convert.ToByte(number5.Value);
                     Dur = Convert.ToChar(Duration);

                String b2BN = BlinkNum.ToString();
                String b3BD = BlinkDur.ToString();
                String b4BI = BlinkInt.ToString();
                String b5BD = BlinkDel.ToString();
                String b6Dur = Duration.ToString();
               
                bit2.Text = b2BN;
                bit3.Text = b3BD;
                bit4.Text = b4BI;
                bit5.Text = b5BD;
                bit6.Text = b6Dur;
                int[] intbyte = new int[] { };
                port = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One);
                port.Open();
                Duration, Endbyte }, 0, 8);          
                port.Close();
             }

       
        private void bit1_Click(object sender, EventArgs e)
        {
        }
        private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
           {
                byte myData;
                port.ReadTimeout = 20;
                while (port.BytesToRead > 0)
                {
                    try
                    {
                        myData = System.Convert.ToByte(port.ReadByte());
                        this.BeginInvoke((new myDelegate(stringDebug)), myData);
                    }

                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
         }
}