c# problem with webBrowser.ReadyState

Aug 11 2010 4:46 AM
Hi,

here I'm stucked again :crying:

I got this error:

System.InvalidCastException was unhandled by user code

System.InvalidCastException was unhandled by user code
  Message=Specified cast is not valid.
  Source=System.Windows.Forms
  StackTrace:
       at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetLocation()
       at System.Windows.Forms.WebBrowser.get_Document()
       at System.Windows.Forms.WebBrowser.get_ReadyState()
       at test.Form2.timer1_Tick(Object sender, EventArgs e) in C:\Users\Tilen\documents\visual studio 2010\Projects\test\Form2.cs:line 410
       at System.Windows.Forms.Timer.OnTick(EventArgs e)
       at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       at System.Windows.Forms.Application.DoEvents()
       at test.Form2.backgroundWorker1_DoWork(Object sender, DoWorkEventArgs e) in C:\Users\Tilen\documents\visual studio 2010\Projects\test\Form2.cs:line 350
       at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
       at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
  InnerException:


This error I get with that:

 while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

I dont know why I get that error, on the other applications this has worked.


Here is the complete function:

private void timer1_Tick(object sender, EventArgs e)
        {
            MessageBox.Show("timer time");
            timer1.Stop();
            timer1.Interval = 300000;
            for (int i = 0; i <= 199; i++)
            {
                string id_mesta, thtml, trenutno, trenutno2;
                int[] surovine = new int[4];
                int[] tip_polja = new int[19];
                int[] indeks_min_surovin = new int[4];
                int[,] level_polj = new int[19,3];
                int temp_level, zito_na_uro;
                bool prva_izbira = true;

                id_mesta = globalno.mesta[i, 0];
                if (id_mesta == "") break;
                if (File.Exists("UserConfig\\" + id_mesta + ".txt"))
                {
                    webBrowser1.Navigate(globalno.g_userServer + "dorf1.php?newdid=" + id_mesta);
                    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();
             //       while (webBrowser1.IsBusy == false) Application.DoEvents();
             //       while (webBrowser1.IsBusy == true) Application.DoEvents();
                    thtml = webBrowser1.DocumentText;
                    string tipmesta = funkcije.StringRegExp(thtml, "id=\"village_map\" class=\"", "\"");
                    switch(tipmesta)
                    {
                        // 0-žito, 1-les, 2-glina, 3-železo
                        case "f1": tip_polja[1] = 0; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 0; tip_polja[5] = 0; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f2": tip_polja[1] = 3; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f3": tip_polja[1] = 1; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f4": tip_polja[1] = 1; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 2; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f5": tip_polja[1] = 1; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 1; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f6": tip_polja[1] = 0; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 0; tip_polja[6] = 0; tip_polja[7] = 0; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 0; tip_polja[11] = 0; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 0; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 0; tip_polja[18] = 0; break;
                        case "f7": tip_polja[1] = 0; tip_polja[2] = 0; tip_polja[3] = 0; tip_polja[4] = 1; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f8": tip_polja[1] = 3; tip_polja[2] = 0; tip_polja[3] = 0; tip_polja[4] = 1; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f9": tip_polja[1] = 3; tip_polja[2] = 0; tip_polja[3] = 0; tip_polja[4] = 1; tip_polja[5] = 1; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f10": tip_polja[1] = 3; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 2; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        case "f11": tip_polja[1] = 3; tip_polja[2] = 1; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 1; tip_polja[6] = 0; tip_polja[7] = 0; tip_polja[8] = 3; tip_polja[9] = 3; tip_polja[10] = 2; tip_polja[11] = 2; tip_polja[12] = 3; tip_polja[13] = 1; tip_polja[14] = 0; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 0; tip_polja[18] = 0; break;
                        case "f12": tip_polja[1] = 1; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 1; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                        default: tip_polja[1] = 1; tip_polja[2] = 0; tip_polja[3] = 1; tip_polja[4] = 3; tip_polja[5] = 2; tip_polja[6] = 2; tip_polja[7] = 3; tip_polja[8] = 0; tip_polja[9] = 0; tip_polja[10] = 3; tip_polja[11] = 3; tip_polja[12] = 0; tip_polja[13] = 0; tip_polja[14] = 1; tip_polja[15] = 0; tip_polja[16] = 2; tip_polja[17] = 1; tip_polja[18] = 2; break;
                    }
                     for (int j = 1; j < 19; j++)
                     {
                        string level2 = funkcije.StringRegExp(thtml, "class=\"reslevel rf" + j + " level", "\"");
                        int level = System.Convert.ToInt32(level2);
                        switch (j)
                        {
                            case 1: level_polj[j,0] = level; break;
                            case 2: level_polj[j,0] = level; break;
                            case 3: level_polj[j,0] = level; break;
                            case 4: level_polj[j,0] = level; break;
                            case 5: level_polj[j,0] = level; break;
                            case 6: level_polj[j,0] = level; break;
                            case 7: level_polj[j,0] = level; break;
                            case 8: level_polj[j,0] = level; break;
                            case 9: level_polj[j,0] = level; break;
                            case 10: level_polj[j,0] = level; break;
                            case 11: level_polj[j,0] = level; break;
                            case 12: level_polj[j,0] = level; break;
                            case 13: level_polj[j,0] = level; break;
                            case 14: level_polj[j,0] = level; break;
                            case 15: level_polj[j,0] = level; break;
                            case 16: level_polj[j,0] = level; break;
                            case 17: level_polj[j,0] = level; break;
                            case 18: level_polj[j,0] = level; break;
                       }
                    }
                    for (int j = 1; j < 19; j++)
                    {
                        string temp = funkcije.preberiPodatek("polje"+j, "UserConfig\\" + id_mesta + ".txt");
                        if(temp == "error") temp_level = 0;
                        else temp_level = System.Convert.ToInt32(temp);
                        switch (j)
                        {
                            case 1: level_polj[j, 1] = temp_level; break;
                            case 2: level_polj[j, 1] = temp_level; break;
                            case 3: level_polj[j, 1] = temp_level; break;
                            case 4: level_polj[j, 1] = temp_level; break;
                            case 5: level_polj[j, 1] = temp_level; break;
                            case 6: level_polj[j, 1] = temp_level; break;
                            case 7: level_polj[j, 1] = temp_level; break;
                            case 8: level_polj[j, 1] = temp_level; break;
                            case 9: level_polj[j, 1] = temp_level; break;
                            case 10: level_polj[j, 1] = temp_level; break;
                            case 11: level_polj[j, 1] = temp_level; break;
                            case 12: level_polj[j, 1] = temp_level; break;
                            case 13: level_polj[j, 1] = temp_level; break;
                            case 14: level_polj[j, 1] = temp_level; break;
                            case 15: level_polj[j, 1] = temp_level; break;
                            case 16: level_polj[j, 1] = temp_level; break;
                            case 17: level_polj[j, 1] = temp_level; break;
                            case 18: level_polj[j, 1] = temp_level; break;
                       }
                    }
                    for (int j = 1; j < 19; j++)
                    {
                        level_polj[j, 2] = level_polj[j, 1] - level_polj[j, 0];
                    }

                    trenutno2 = funkcije.StringRegExp(thtml, "<td id=\"l4\" title=\"", "\"");
                    trenutno = funkcije.StringRegExp(thtml, "<td id=\"l4\" title=\"" + trenutno2 + "\">", "/");
                    if (trenutno == "error") surovine[1] = 1000;
                    else surovine[1] = System.Convert.ToInt32(trenutno);

                    trenutno2 = funkcije.StringRegExp(thtml, "<td id=\"l3\" title=\"", "\"");
                    trenutno = funkcije.StringRegExp(thtml, "<td id=\"l3\" title=\"" + trenutno2 + "\">", "/");
                    if (trenutno == "error") surovine[2] = 1000;
                    else surovine[2] = System.Convert.ToInt32(trenutno);

                    trenutno2 = funkcije.StringRegExp(thtml, "<td id=\"l2\" title=\"", "\"");
                    trenutno = funkcije.StringRegExp(thtml, "<td id=\"l2\" title=\"" + trenutno2 + "\">", "/");
                    if (trenutno == "error") surovine[3] = 1000;
                    else surovine[3] = System.Convert.ToInt32(trenutno);

                    trenutno2 = funkcije.StringRegExp(thtml, "<td id=\"l1\" title=\"", "\"");
                    zito_na_uro = System.Convert.ToInt32(trenutno2);
                    trenutno = funkcije.StringRegExp(thtml, "<td id=\"l1\" title=\"" + trenutno2 + "\">", "/");
                    if (trenutno == "error") surovine[0] = 1000;
                    else surovine[0] = System.Convert.ToInt32(trenutno);

                    for (int j = 0; j <= 3; j++)
                    {
                        if (surovine[0] >= surovine[1])
                        {
                            indeks_min_surovin[j] = 0;
                            if (j == 1) { if (indeks_min_surovin[0] == indeks_min_surovin[j]) indeks_min_surovin[j] = 1; }
                            if (j == 2) { if (indeks_min_surovin[0] == indeks_min_surovin[j] && indeks_min_surovin[1] == indeks_min_surovin[j]) indeks_min_surovin[j] = 1; }
                            if (j == 3) { if (indeks_min_surovin[0] == indeks_min_surovin[j] && indeks_min_surovin[1] == indeks_min_surovin[j] && indeks_min_surovin[2] == indeks_min_surovin[j]) indeks_min_surovin[j] = 1; }
                        }
                        else
                        {
                            indeks_min_surovin[j] = 1;
                            if (j == 1) { if (indeks_min_surovin[0] == indeks_min_surovin[j]) indeks_min_surovin[j] = 0; }
                            if (j == 2) { if (indeks_min_surovin[0] == indeks_min_surovin[j] && indeks_min_surovin[1] == indeks_min_surovin[j]) indeks_min_surovin[j] = 0; }
                            if (j == 3) { if (indeks_min_surovin[0] == indeks_min_surovin[j] && indeks_min_surovin[1] == indeks_min_surovin[j] && indeks_min_surovin[2] == indeks_min_surovin[j]) indeks_min_surovin[j] = 0; }
                        }
                        if (surovine[indeks_min_surovin[j]] < surovine[2])
                        {
                            if (j == 1) { if (indeks_min_surovin[0] != 2) indeks_min_surovin[j] = 2; }
                            if (j == 2) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2) indeks_min_surovin[j] = 2; }
                            if (j == 3) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2 && indeks_min_surovin[2] != 2) indeks_min_surovin[j] = 2; }
                        }
                        if (surovine[indeks_min_surovin[j]] < surovine[3])
                        {
                            if (j == 1) { if (indeks_min_surovin[0] != 2) indeks_min_surovin[j] = 3; }
                            if (j == 2) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2) indeks_min_surovin[j] = 3; }
                            if (j == 3) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2 && indeks_min_surovin[2] != 2) indeks_min_surovin[j] = 3; }
                        }
                        if (zito_na_uro < 5)
                        {
                            if (j == 1) { if (indeks_min_surovin[0] != 2) indeks_min_surovin[j] = 0; }
                            if (j == 2) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2) indeks_min_surovin[j] = 0; }
                            if (j == 3) { if (indeks_min_surovin[0] != 2 && indeks_min_surovin[1] != 2 && indeks_min_surovin[2] != 2) indeks_min_surovin[j] = 0; }

                        }
                    }

                    for (int k = 0; k <= 3; k++)
                    {
                        prva_izbira = true;
                        temp_level = 0;
                        for (int j = 1; j < 19; j++)
                        {
                            if (tip_polja[j] == indeks_min_surovin[k] && (level_polj[j, 2] > 0))
                            {
                                if (prva_izbira == true) { temp_level = j; prva_izbira = false; }
                                else
                                {
                                    if (level_polj[temp_level, 2] < level_polj[j, 2]) temp_level = j;
                                }
                            }
                        }
                        if (temp_level == 0) continue;
                        int id_mesta_stevilka = System.Convert.ToInt32(globalno.mesta[i, 0]);
                        if (Nadgradi(temp_level, id_mesta_stevilka) == true) break;
                    }
                }
            }
            timer1.Start();
        }



If I call

MessageBox.Show(webBrowser1.IsBusy.ToString()) I got the exception that user code was unhandled ......
and the same here MessageBox.Show(webBrowser1.ReadyState.ToString())

It seems like that webbrowser1 doesnt works at all???
Maybe I forgot something ???

Please I realy need help, I'm stucked here for 4 days .....