Well I'm back again to pick brains! We've written this code in class and i was wondering if im stuck in an endless loop somewhere. i cant get the application to load, when it does i just find it sitting in my task manager doing nothing but taking up CPU %. can some one help me here? its also due tonight by 11:59 pm i hate my timing its crummy i say!

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace HighCard
{
    public partial class FrmHighCard : Form
    {
        //fields
        private int rankPlayer;   //2-14 w/ A high        
        private int suitPlayer;   //1-4 c,d,h,s        
        private Random r;


        public FrmHighCard()
        {
            InitializeComponent();
            rankPlayer = 0;
            suitPlayer = 0;
            r = new Random();


        }

        private void btnDealCards_Click(object sender, EventArgs e)
        {
            // declarations
            string rankStr, suitStr;
            string card1 = "", card2 = "";
            int i = 0;
            int player1Rank = 0;
            bool cardsDelt = false;
            StreamWriter writer;



            while (!cardsDelt)
            {

                // input
                rankPlayer = r.Next(2, 4); // generates value of 2-14 since max is exclusive***
                suitPlayer = r.Next(1, 2);



                // process
                switch (rankPlayer)
                {
                    case 11:
                        rankStr = "Jack";
                        break;
                    case 12:
                        rankStr = "Queen";
                        break;
                    case 13:
                        rankStr = "King";
                        break;
                    case 14:
                        rankStr = "Ace";
                        break;
                    default:
                        rankStr = rankPlayer.ToString();
                        break;
                }


                switch (suitPlayer)
                {
                    case 1:
                        suitStr = "Clubs";
                        break;
                    case 2:
                        suitStr = "Diamonds";
                        break;
                    case 3:
                        suitStr = "Hearts";
                        break;
                    default:
                        suitStr = "Spades";
                        break;

                }//end of switch suit
                if (i == 0) //first iteration
                {
                    i++;
                    player1Rank = rankPlayer;
                    card1 = rankStr + " of " + suitStr;
                }
                else// second itteration
                {
                    card2 = rankStr + " of " + suitStr;
                    if (card1 != card2)
                        cardsDelt = true;
                    else if (card1 == card2)
                        i = 0;

                }
            }//end of for loop


            //output
            lstplayer1.Items.Add(card1);
            lstplayer2.Items.Add(card2);
            lstplayer1.SelectedIndex = lstplayer1.Items.Count - 1;
            lstplayer2.SelectedIndex = lstplayer2.Items.Count - 1;


            if (player1Rank > rankPlayer)
                MessageBox.Show(cboxPlayer1.SelectedItem + " Wins High Card");
            else if (rankPlayer > player1Rank)
                MessageBox.Show(cboxPlayer1.SelectedItem + " Wins High Card");
            else
                //MessageBox.Show(cboxPlayer1.SelectedItem + " and " + cboxPlayer2.SelectedItem + " Tie Highcard");

                try
                {
                    writer = new StreamWriter("carddeck.dat", true);
                    writer.WriteLine(card1);
                    writer.WriteLine(card2);
                    writer.Close();

                }
                catch
                {
                    MessageBox.Show("file output error");
                }
        }

        private void FrmHighCard_Load(object sender, EventArgs e)
        {
            StreamReader reader;
            string player;

            try
            {
                reader = new StreamReader("players.dat");
                player = reader.ReadLine();
                while (player != null)
                {
                    cboxPlayer1.Items.Add(player);

                }

                reader.Close();

            }
            catch
            {
                MessageBox.Show("File Read Error");
            }
        }

        private void cboxPlayer1_SelectedIndexChanged(object sender, EventArgs e)
        {
            StreamReader reader;
            string player;
            cboxPlayer2.Items.Clear();

            try
            {
                reader = new StreamReader("players.dat");
                player = reader.ReadLine();
                while (player != null)
                {
                    if (cboxPlayer1.SelectedItem.ToString() != player)
                        cboxPlayer2.Items.Add(player);
                    player = reader.ReadLine();
                }

                reader.Close();

            }
            catch
            {
                MessageBox.Show("File Read Error");
            }
        }
    }
}