Openfiledialog aplikacja się zacina w tym miejscu

0

Witam mam taki problem używam komponentu openfiledialog po to by wydobyć ścieżkę do pliku który wybiera użytkownik to jest mój kod

 OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(openFileDialog.FileName.ToString());
                    fotka = true;
                }

i za pierwszym razem jak to używam jest wszystko ok, zamykam sobie okienko i robie to jeszcze raz i wtedy okno to co się otwarło zacina się i jest białe - aplikacja nie odpowiada, co może być przyczyną albo co robię źle.

interesuje mnie by wiele razy odczytywac ścieżki do pliku który wybiera użytkownik

0

Czegoś jeszcze nam nie napisałeś. Tak po prostu nie może przestać odpowiadać, bo ten kod jest prawidłowy. Pokaż jak dokładnie wywołujesz ten kod.

0
 private void pictureBox1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    pictureBox1.Image = Image.FromFile(openFileDialog.FileName.ToString());
                    fotka = true;
                }
            

        }

mam ten kod przypisany do pictureBox1 z zdarzeniem click

0

A jak wczytujesz ten obrazek?
Tworzysz gdzieś instancje Image?
Pamiętam jak używałem StreamReader co czytania z pliku .txt to też program za drugim razem się sypał ponieważ nie zamykałem/zwalniałem strumienia poprzez
"x.Close() , x.Dispose()" może z Image trzeba tak samo.

0

Nic się nie zacina, działa dobrze.
Ale weź machnij jakieś ustawienia do tego openfiledialogu żeby ktoś nie wczytał innych plików niż ty sobie zaplanujesz

0

jednak nie chodzi :)

0

Masz ustawiony atrybut [STAThread] przy metodzie Main?

0

tak

0

Używasz może jakiś kontrolek COM? Wołasz sam CoInitialize(Ex) przez P/Invoke albo coś w tym stylu? Spróbuj może wywołać okno z nowego wątku.

0

Nic takiego nie uzywam.
A powiesz mi jak to w nowym watku zrobic?

0

A jakiego masz antyvira?

0

F-secure

0

Niestety dalej ten sam problem mi się pojawia

1

Możesz gdzieś wrzucić najprostszy możliwy kod który zacina się przy openfiledialogu u ciebie? Będzie prościej coś wymyślić jeśli udałoby się błąd powtórzyć...

1

Ja tylko dodam swoje dwa grosze. Po co

openFileDialog.FileName.ToString()

skoro

openFileDialog.FileName

już ci zwraca string.

0

czy jest możliwe że przyczyną jest to że w projekcie mam wrzuconą formatkę gdzie używam tego openfiledialog do folderu formatki?
tworzę nowy projekt i dodaje sobie nową formatkę bezpośrednio i wszystko jest ok nic nie zacina.

tylko w tym projekcie co robię zacina mi się to - w innym testowym działa wszystko normalnie

0

Czy przypadkiem nie chodzi o to, że Image.FromFile może długo sie wykonywać dla dużego obrazka i blokuje główny wątek?

0

Dlaczego za każdym razem tworzysz OpenFileDialog?

OpenFileDialog openFileDialog = new OpenFileDialog();

Utwórz go raz globalnie.

0
maszynaz napisał(a)

Dlaczego za każdym razem tworzysz OpenFileDialog?

OpenFileDialog openFileDialog = new OpenFileDialog();

Utwórz go raz globalnie.

Po co globalnie?

Ja bym sugerował tak:

 
private void pictureBox1_Click(object sender, EventArgs e)
{
    using(OpenFileDialog openFileDialog = new OpenFileDialog())
    {
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            pictureBox1.Image = Image.FromFile(openFileDialog.FileName);
            fotka = true;
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1