[ bunker @ 13.12.2004. 14:49 ] @
imam situaciju da forma koja radi neki posao, izvodi par stotina skriptova na bazi oko 60sec, ima ProgressBar i RichTextBox u koji upisuje sve izvedene skriptove, ostane glupa nakon gubljenja fokusa i ponovnog vracanja.

aplikacija nastavlja da radi, ali progres bar i textbox se ne osvezavaju. Posle izvesnog vremena dobijem poruku da su svi scriptovi uspesno izvedeni, i mogu da procitam sta se tu izdesavalo, ali ne bih hteo da u rantajmu ostane smrznuta i da izgleda da nista ne radi.

pokusao sam da pozivam metod Refresh(), nakon ispisivanja stringa u textBox ili inkrementiranja ProgressBar-a, ali se ne desava nista.
da li je neko imao slican problem, i da li ga je resio, naravno?

jos jedan problem:
TextBox.ScrollToCaret(), ne radi bas uvek?!
[ ZokiR @ 14.12.2004. 01:23 ] @
Ako kod koji 'radi posao' izvršavaš u posebnoj niti (thread), ne bi trebalo da bude problema u osvežavanju korisničkog interfejsa.
[ bunker @ 15.12.2004. 09:41 ] @
mislis li da je to jedino resenje?
[ NeznamTkoSam @ 15.12.2004. 21:18 ] @
Probaj sa Application.DoEvents();
[ bunker @ 16.12.2004. 08:34 ] @
Citat:
NeznamTkoSam: Probaj sa Application.DoEvents();


bravo. to mi je trebalo.

Thread je takodje radio posao, ali je ovako bolje. ne moram da zakljucavam polja za unos...
[ NeznamTkoSam @ 16.12.2004. 18:50 ] @
DoEvents je jako vazna funkcija.
Probaj pokrenut ovaj program bez DoEvents funkcije:
Code:
using System;
using System.Windows.Forms;

namespace ProgramBez.DoEvents.Funkcije
{
    public class MainForm : Form
    {
        public MainForm() {}
        
        [STAThread]
        public static void Main(string[] args)
        {
            MainForm forma = new MainForm();
            forma.Show();
            do {} while(true);
        }
    }
}
Smrznut ce se. A probaj sa DoEvents funkcijom:
Code:
using System;
using System.Windows.Forms;

namespace ProgramSa.DoEvents.Funkcijom
{
    public class MainForm : Form
    {
        public MainForm() {}
        
        [STAThread]
        public static void Main(string[] args)
        {
            MainForm forma = new MainForm();
            forma.Show();
            do
            {
                Application.DoEvents();
            } while(true);
        }
    }
}
[ bunker @ 17.12.2004. 08:28 ] @
jasno, druze. znao sam da treba da procesiram Message, ali nisam mogao da nadjem resenje (WndProc). ovo je zavrsilo bas to sto sam trazio i resicce mi neke probleme i za ubuducce.
pomogao si mi jako, tome valjda i sluze forumi...
pozdrav.