Zamykanie wątku przyciskiem?

0

Witam serdecznie,

przychodzę do Kolegów i Koleżanek po drobną pomoc.
Otóż nie bardzo wiem jak zamknąć wątek, ale może najpierw kod:

 
public Thread proba;

        private void ThreadTask()
        {
            jakiś tam filewatcher sobie działa
        }

buttonem odpalam:

  
private void button_Click(object sender, EventArgs e)
        {
Thread proba = new Thread(new ThreadStart(this.ThreadTask));
            pierwszy.IsBackground = true;
            pierwszy.Start();
}

Chciałbym abym po naciśnięciu przycisku STOP wątek przestał działać - zatrzymał się, próbowałem na kilak sposobów, pierwszy z brzegu:

         private void button2_Click(object sender, EventArgs e)
        {
            
            proba.Abort();

        }

Niestety wyskakuje błąd o treści: "Object reference not set to an instance of an object."

Jeżeli ktokolwiek zechciałby poświęcić odrobinę swojego czasu byłbym bardzo wdzięczny i z góry dziękuję.

Pozdrawiam

0

W której linijce ten błąd wyskakuje?

A, już widzę chyba. Po co robisz tak:

Thread proba = new Thread(new ThreadStart(this.ThreadTask));

Przecież w ten sposób tworzysz nową zmienną lokalną.

0

Od razu widać, że przesłaniasz zmienną proba w funkcji button_Click. Usuń sprzed niej Thread.

0

Witam,

somekind, siararadek bardzo dziękuję za zainteresowanie. Faktycznie po przekształceniu:

 proba = new Thread(new ThreadStart(this.ThreadTask));
            proba.IsBackground = true;
            proba.Start();

błąd nie wyskakuje, jednak czy wątek faktycznie zostaje zamknięty.... filewatcher niestety ciągle działa i wygląda to tak jakby nie było totalnie reakcji. Co może być tego przyczyną? Może specyfika filewatcherów?

Pozdrawiam

0

A tak

filewatcher1.EnableRaisingEvents = false;

nie działa?

0

A to FileSystemWatcher wymaga w ogóle oddzielnego wątku do pracy?

0

Witam,

oczywiście filewatcher nie wymaga oddzielnego wątku, ale mając ich kilkanaście chciałbym móc wyłączyć wszystko hurtowo, a nie każdy z osobna jak zaproponował Fr33Q.

Dziękuję za zainteresowanie.

Pozdrawiam

0

Wrzucić wszystkie do tablicy\listy.. Będze sie dało operować na wszystkich elementach jednocześnie, właściwie w jednej linii kodu... IMHO bez sensu z tymi wątkami.

0

Fr33Q ok, dziękuję za poradę. Wątki sobie w takim razie za Waszymi namowami odpuszczę:)

A teraz pytanie z kompletnie innej bajki....

Czy jest możliwość otwarcia pliku we wcześniej wybranym programie z wybranymi wcześniej opcjami?
Już tłumacze dokładnie. Mam plik mp3, otwieram go bestplayerem i domyślnie startuje nie od początku ale np od 2 minuty. Inny przykład, zdjęcie -> otwiera się i chce aby od razu pokazywało się w podglądzie pełnoekranowym..... Czy to w ogóle jest do zrobienia? Jeżeli tak w jaki sposób szukać informacji na ten temat, pod jakimi hasłami...?

Z góry dziękuję za podpowiedź.

Pozdrawiam

0

Najprościej by było gdyby aplikacja udostępniała takie opcje poprzez linię komend (argumenty). Jeśli nie, to pozostaje chyba tylko ingerencja w pamięć jej procesu (?).

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