Autor Wątek: Problem z BackGroundWorker?  (Przeczytany 2072 razy)

Offline adsko

  • Użytkownik

# Listopad 19, 2012, 18:01:00
Mam kod programu który ze strony zczytuje oceny itp. rzeczy, lecz po uruchomieniu i zalogowaniu się wyskakuje że backgroundworker jest zajety. Może ktoś coś powiedzieć na ten temat z kodu podanego niżej?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Web;
using System.Net;
using System.IO;
using System.Threading;
using System.Windows.Forms;
//
//poprawki: przemieszczanie okna za pomocą myszki
//
namespace Librus3._00
{
    public partial class Logowanie : Form
    {
        bool bladprg = false;
        CookieContainer cookies;
        HttpWebRequest request;
        HttpWebResponse response;
        string loginData;
        byte[] loginDataBytes;
        Stream postData;
        Stream resStream;
        StreamReader reader;
        string input,terminarz,oceny,nieobecnosci,moje_zadania;
        HttpWebResponse webResp;
        string login;
        string haslo;
        public Logowanie(string log,string has)
        {
            login = log;
            haslo = has;
            InitializeComponent();
            laczenie.RunWorkerAsync();
        }

        private void Logowanie_Load(object sender, EventArgs e)
        {
            laczenie.RunWorkerAsync();


        }

        private void Logowanie_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (bladprg == false)
            {
                Application.Exit();
            }


        }

        private void Logowanie_FormClosing(object sender, FormClosingEventArgs e)
        {

        }

        private void backgroundWorker1_DoWork_1(object sender, DoWorkEventArgs e)
        {
            cookies = new CookieContainer();
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/loguj");
            request.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1";
            request.Method = "GET";
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse();
            response.Close();
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            progressBar1.Value += 10;
            label1.Text = "Pierwszy etap zakończony";
            probalogowania.RunWorkerAsync();
        }

        private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            label1.Text = "Drugi etap został zakończony";
            progressBar1.Value += 10;
            int logowanie = input.IndexOf("Jesteś zalogowany jako:");
            if (logowanie>=0)
            {
                progressBar1.Value +=10;
                label1.Text = "Zostałeś poprawnie zalogowany";
                terminarzz.RunWorkerAsync();
            }
            else
            {
                Form blad = new Bladlog();
                bladprg = true;
                this.Close();
                blad.Show();
 
            }
        }
        private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
        {
            //POST
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/loguj");
            request.Method = "POST";
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            loginData = String.Format("&xjxr=1322760116817&xjxargs[]=S" + login);
            request.ContentType = "application/x-www-form-urlencoded";
            loginDataBytes = Encoding.ASCII.GetBytes(loginData);
            postData = request.GetRequestStream();
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
            postData.Close();
            webResp = (HttpWebResponse)request.GetResponse();
            response.Close();
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/loguj");
            request.Method = "POST";
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            loginData = String.Format("login=" + login + "&passwd=" + haslo + "&ed_pass_keydown=&ed_pass_keyup=&captcha=&jest_captcha=1&czy_js=1&token=aa1");
            request.ContentType = "application/x-www-form-urlencoded";
            loginDataBytes = Encoding.ASCII.GetBytes(loginData);
            postData = request.GetRequestStream();
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
            postData.Close();
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            input = reader.ReadToEnd();
            response.Close();
            reader.Close();
            //

        }

        private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
        {
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/terminarz");
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            terminarz = reader.ReadToEnd();
            response.Close();
            reader.Close();
        }

        private void backgroundWorker3_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            int termin = terminarz.IndexOf("<td class=\"dzien\" ><table style=\"");
            progressBar1.Value += 10;
            if (termin >= 0)
            {
                label1.Text = "Pobrano terminarz";
                ocenyy.RunWorkerAsync();
            }
            else
            {
                label1.Text = "Problem z pobraniem terminarza!";
                button1.Visible = true;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            bladprg = true;
            this.Close();
            Form start = new Start();
            start.Show();
        }

        private void ocenyy_DoWork(object sender, DoWorkEventArgs e)
        {
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/przegladaj_oceny/uczen");
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            oceny = reader.ReadToEnd();
            response.Close();
            reader.Close();
        }

        private void ocenyy_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            int ocen = oceny.IndexOf("<h1>OCENY</h1>");
            progressBar1.Value += 10;
            if (ocen >= 0)
            {
                label1.Text = "Pobrano oceny";
                nieobecności.RunWorkerAsync();
            }
            else
            {
                label1.Text = "Problem z pobraniem ocen!";
                button1.Visible = true;
            }
           
        }

        private void nieobecności_DoWork(object sender, DoWorkEventArgs e)
        {
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/przegladaj_nb/uczen");
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            nieobecnosci = reader.ReadToEnd();
            response.Close();
            reader.Close();
        }

        private void nieobecności_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            int nb = nieobecnosci.IndexOf("<h1>NIEOBECNOŚCI</h1>");
            progressBar1.Value += 10;
            if (nb >= 0)
            {
                label1.Text = "Pobrano nieobecności";
                zadania.RunWorkerAsync();
            }
            else
            {
                label1.Text = "Problem z pobraniem nieobecności!";
                button1.Visible = true;
            }
        }

        private void zadania_DoWork(object sender, DoWorkEventArgs e)
        {
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/moje_zadania");
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            moje_zadania = reader.ReadToEnd();
            response.Close();
            reader.Close();
        }

        private void zadania_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            int zad = moje_zadania.IndexOf("<h1>Zadania ucznia</h1>");
            progressBar1.Value += 10;
            if (zad >= 0)
            {

                label1.Text = "Pobrano zadania";
                bladprg = true;

                this.Close();
                Form ocen = new oceny(oceny, "33");
                ocen.Show();
                //this.Close();
                //Form Menu = new menu(input, terminarz, oceny, nieobecnosci,moje_zadania);
               // Menu.Show();
            }
            else
            {
                label1.Text = "Problem z pobraniem zadań!";
                button1.Visible = true;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

    }
}

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline fn2000

  • Użytkownik

# Marzec 31, 2013, 00:15:33
Generalnie taka uwaga - jak chcesz aby ktoś Ci pomógł to uszanuj jego czas i wrzuć właściwe fragmenty kodu. Jak nie wiesz, które to są właściwe to wróć do początków programowania.

Nie wiem dlaczego "wyskakuje, że jest zajęty" - jakiś komunikt o błędzie łaskawie może byś załączył? Nie dałeś kody inicjacji backgroundworkera - to podstawowa sprawa.

Poza tym, radzę na tym etapie wiedzy programistycznej korzystać z wbudowanych narzędzi, w tym przypadku polecam asynchroniczne wywołania httpwebrequest'a.

Offline Xirdus

  • Redaktor

  • +3
# Marzec 31, 2013, 00:22:33
@fn2000 Generalnie taka uwaga - patrz na datę tematu ;)

Z oczywistych przyczyn zamykam.

Co się dzieje? Forum za bardzo wczuło się w Wielkanoc i na potęgę zmartwychwstaje stare tematy?