wyświetlanie danych / konsoli w aplikacji Windows Form

wyświetlanie danych / konsoli w aplikacji Windows Form
robertek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

witam.

w jaki sposób w aplikacji okienkowej windows form wyświetlać informacje o tym co obecnie wykonuje program? operuję na załóżmy 10 000 plikach i chciałbym na biężaco pokazywać, który plik obecnie jest "obsługiwany" + dodatkowo status związany z operacjami jak udane, nieudane itp .

chciałem wyświetlać to za pomocą richtextbox ale on nie odświeża tekstu na bieżąco ( cały program bazuje na pętli foreach oczywiście ). Jedynym sposobem na to, aby richtextbox wyświetlił prawidłowy produkt, na którym wykonywane są operacje jest pod koniec albo na początku kolejnej pętli, wyświetlić messagebox'a - jak domniemam program wtedy czeka za moim kliknięciem "OK" , aby móc kontynuować dalej przez co udaje mu się wyświetlić aktualny plik w richtextboxie.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Szybkie odpytanie google. Tutaj dwa sposoby bardziej zaawansowane:
http://stackoverflow.com/questions/4362111/how-do-i-show-a-console-output-window-in-a-forms-application
http://stackoverflow.com/questions/472282/show-console-in-windows-application

A tu najprostszy z możliwych:
http://stackoverflow.com/questions/5706723/windows-form-console-writeline-where-is-console

EDIT:
To jeżeli koniecznie chciałbyś mieć konsolę. W przeciwnym wypadku zrób jak kolega niżej radzi.

T2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 194
0

Dzieje się tak dlatego, ponieważ wykonujesz tą opcje na wątku UI. Musisz użyć background workera. dzięki temu przeniesiesz zadanie na osobny wątek oraz dodatkowo będziesz miał prosty mechanizm do aktualizowania statusu.

HI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1863
0

Najprostszy choć mało "elegancki" sposób to po każdym dopisaniu do RichTextBoxa wywołać dodatkowo Application.DoEvent()

katelx
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Hong Kong
0

najlatwiej to chyba stworzyc sobie taska np tak:

Kopiuj
Task.Factory.StartNew(ProcessFiles);

metoda:

Kopiuj
void ProcessFiles()
{
    for(var i=0;i<files.Length;i++)
    {
         var file = files[i];
         form.BeginInvoke(new Action(() => label.Text = "processing " + file));
         //przetwarzanie pliku
    }
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.