System.InvalidOperationException in Output Window

Posted by user318068 on Stack Overflow See other posts from Stack Overflow or by user318068
Published on 2010-06-05T19:16:39Z Indexed on 2010/06/05 19:22 UTC
Read the original article Hit count: 361

Filed under:

I constantly get the following message in my output/debug windows. The app doesn't crash but I was wondering what the deal with it is:

A first chance exception of type 'System.InvalidOperationException' occurred in System.dll

my code :sol.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Sol
    {


        public LinkedList<int> tower1 = new LinkedList<int>();
        public LinkedList<int> tower2 = new LinkedList<int>();
        public LinkedList<int> tower3 = new LinkedList<int>();

        public static LinkedList<string> BFS = new LinkedList<string>();
        public static LinkedList<string> DFS = new LinkedList<string>();
        public static LinkedList<string> IDS = new LinkedList<string>();


        public int depth;

        public LinkedList<Sol> neighbors;

        public Sol()
        {
        }

        public Sol(LinkedList<int> tower1, LinkedList<int> tower2, LinkedList<int> tower3)
        {
            this.tower1 = tower1;
            this.tower2 = tower2;
            this.tower3 = tower3;

            neighbors = new LinkedList<Sol>();
        }

        public virtual void getneighbors()
        {

            Sol temp = this.copy();
            Sol neighbor1 = this.copy();
            Sol neighbor2 = this.copy();
            Sol neighbor3 = this.copy();
            Sol neighbor4 = this.copy();
            Sol neighbor5 = this.copy();
            Sol neighbor6 = this.copy();





            if (temp.tower1.Count != 0)
            {

                if (neighbor1.tower2.Count != 0)
                {
                    if (neighbor1.tower1.First.Value < neighbor1.tower2.First.Value)
                    {
                        neighbor1.tower2.AddFirst(neighbor1.tower1.First);
                        neighbor1.tower1.RemoveFirst();
                        neighbors.AddLast(neighbor1);
                    }

                }
                else
                {
                    neighbor1.tower2.AddFirst(neighbor1.tower1.First);
                    neighbor1.tower1.RemoveFirst();
                    neighbors.AddLast(neighbor1);
                }



                if (neighbor2.tower3.Count != 0)
                {
                    if (neighbor2.tower1.First.Value < neighbor2.tower3.First.Value)
                    {
                        neighbor2.tower3.AddFirst(neighbor2.tower1.First);
                        neighbor2.tower1.RemoveFirst();
                        neighbors.AddLast(neighbor2);
                    }
                }
                else
                {
                    neighbor2.tower3.AddFirst(neighbor2.tower1.First);
                    neighbor2.tower1.RemoveFirst();
                    neighbors.AddLast(neighbor2);
                }

            }




            //-------------

            if (temp.tower2.Count != 0)
            {


                if (neighbor3.tower1.Count != 0)
                {
                    if (neighbor3.tower2.First.Value < neighbor3.tower1.First.Value)
                    {
                        neighbor3.tower1.AddFirst(neighbor3.tower2.First);
                        neighbor3.tower2.RemoveFirst();
                        neighbors.AddLast(neighbor3);
                    }
                }
                else
                {
                    neighbor3.tower1.AddFirst(neighbor3.tower2.First);
                    neighbor3.tower2.RemoveFirst();
                    neighbors.AddLast(neighbor3);
                }



                if (neighbor4.tower3.Count != 0)
                {
                    if (neighbor4.tower2.First.Value < neighbor4.tower3.First.Value)
                    {
                        neighbor4.tower3.AddFirst(neighbor4.tower2.First);
                        neighbor4.tower2.RemoveFirst();
                        neighbors.AddLast(neighbor4);
                    }
                }
                else
                {
                    neighbor4.tower3.AddFirst(neighbor4.tower2.First);
                    neighbor4.tower2.RemoveFirst();
                    neighbors.AddLast(neighbor4);
                }


            }


            //------------------------

            if (temp.tower3.Count() != 0)
            {


                if (neighbor5.tower1.Count() != 0)
                {
                    if (neighbor5.tower3.ElementAtOrDefault(0) < neighbor5.tower1.ElementAtOrDefault(0))
                    {
                        neighbor5.tower1.AddFirst(neighbor5.tower3.First);
                        neighbor5.tower3.RemoveFirst();
                        neighbors.AddLast(neighbor5);
                    }
                }
                else
                {
                    neighbor5.tower1.AddFirst(neighbor5.tower3.First);
                    neighbor5.tower3.RemoveFirst();
                    neighbors.AddLast(neighbor5);
                }



                if (neighbor6.tower2.Count() != 0)
                {
                    if (neighbor6.tower3.ElementAtOrDefault(0) < neighbor6.tower2.ElementAtOrDefault(0))
                    {
                        neighbor6.tower2.AddFirst(neighbor6.tower3.First);
                        neighbor6.tower3.RemoveFirst();
                        neighbors.AddLast(neighbor6);
                    }
                }
                else
                {
                    neighbor6.tower2.AddFirst(neighbor6.tower3.First);
                    neighbor6.tower3.RemoveFirst();
                    neighbors.AddLast(neighbor6);
                }

            }
        }

        public override string ToString()
        {

            string str;

            str = "tower1" + tower1.ToString() + "   tower2" + tower2.ToString() + "   tower3" + tower3.ToString();


            return str;

        }


        public Sol copy()
        {

            Sol So;
            LinkedList<int> l1 = new LinkedList<int>();
            LinkedList<int> l2 = new LinkedList<int>();
            LinkedList<int> l3 = new LinkedList<int>();


            for (int i = 0; i <= this.tower1.Count() - 1; i++)
            {

                l1.AddLast(tower1.ElementAt(i));

            }



            for (int i = 0; i <= this.tower2.Count - 1; i++)
            {

                l2.AddLast(tower2.ElementAt(i));

            }

            for (int i = 0; i <= this.tower3.Count - 1; i++)
            {

                l3.AddLast(tower3.ElementAt(i));

            }


            So = new Sol(l1, l2, l3);
            return So;

        }



        public bool Equals(Sol sol)
        {

            if (this.tower1.Equals(sol.tower1) & this.tower2.Equals(sol.tower2) & this.tower3.Equals(sol.tower3))
                return true;

            return false;

        }


        public virtual bool containedin(Stack<Sol> vec)
        {

            bool found = false;

            for (int i = 0; i <= vec.Count - 1; i++)
            {
                if (vec.ElementAt(i).tower1.Equals(this.tower1) && vec.ElementAt(i).tower2.Equals(this.tower2) && vec.ElementAt(i).tower3.Equals(this.tower3))
                {
                    found = true;
                    break;
                }

            }

            return found;
        }




        public virtual bool breadthFirst(Sol start, Sol goal)
        {
            Stack<Sol> nextStack = new Stack<Sol>();
            Stack<Sol> traversed = new Stack<Sol>();
            bool found = false;

            start.depth = 0;
            nextStack.Push(start);


            while (nextStack.Count != 0)
            {


                Sol sol = nextStack.Pop();

                BFS.AddFirst("poped State:" + sol.ToString() + "level " + sol.depth);

                traversed.Push(sol);

                if (sol.Equals(goal))
                {
                    found = true;
                    BFS.AddFirst("Goal:" + sol.ToString());

                    break;
                }

                else
                {

                    sol.getneighbors();

                    foreach (Sol neighbor in sol.neighbors)
                    {

                        if (!neighbor.containedin(traversed) && !neighbor.containedin(nextStack))
                        {
                            neighbor.depth = (sol.depth + 1);
                            nextStack.Push(neighbor);
                        }
                    }
                }
            }

            return found;
        }


        public virtual bool depthFirst(Sol start, Sol goal)
        {
            Stack<Sol> nextStack = new Stack<Sol>();
            Stack<Sol> traversed = new Stack<Sol>();

            bool found = false;

            start.depth = 0;
            nextStack.Push(start);

            while (nextStack.Count != 0)
            {
                //Dequeue next State for comparison
                //And add it 2 list of traversed States
                Sol sol = nextStack.Pop();


                DFS.AddFirst("poped State:" + sol.ToString() + "level " + sol.depth);


                traversed.Push(sol);


                if (sol.Equals(goal))
                {
                    found = true;
                    DFS.AddFirst("Goal:" + sol.ToString());
                    break;
                }
                else
                {

                    sol.getneighbors();
                    foreach (Sol neighbor in sol.neighbors)
                    {
                        if (!neighbor.containedin(traversed) && !neighbor.containedin(nextStack))
                        {
                            neighbor.depth = sol.depth + 1;
                            nextStack.Push(neighbor);
                        }



                    }
                }

            }
            return found;
        }


        public virtual bool iterativedeepening(Sol start, Sol goal)
        {
            bool found = false;




            for (int level = 0; ; level++)
            {

                Stack<Sol> nextStack = new Stack<Sol>();
                Stack<Sol> traversed = new Stack<Sol>();


                start.depth = 0;
                nextStack.Push(start);

                while (nextStack.Count != 0)
                {

                    Sol sol = nextStack.Pop();

                    IDS.AddFirst("poped State:" + sol.ToString() + "Level" + sol.depth);

                    traversed.Push(sol);

                    if (sol.Equals(goal))
                    {
                        found = true;
                        IDS.AddFirst("Goal:" + sol.ToString());

                        break;
                    }
                    else if (sol.depth < level)
                    {
                        sol.getneighbors();
                        foreach (Sol neighbor in sol.neighbors)
                        {
                            if (!neighbor.containedin(traversed) && !neighbor.containedin(nextStack))
                            {
                                neighbor.depth = sol.depth + 1;
                                nextStack.Push(neighbor);
                            } //end if
                        } //end for each

                    } //end else if
                } // end while

                if (found == true)
                    break;
            } // end for
            return found;
        }



    }
}

Just wondering if I may be doing something wrong somewhere or something. >>>

© Stack Overflow or respective owner

Related posts about c#