🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
5 messages
5 total messages Started by news.gazeta.pl Wed, 22 Dec 2010 20:54
thread
#21930
Author: news.gazeta.pl
Date: Wed, 22 Dec 2010 20:54
61 lines
1795 bytes
Prośba o pomoc.
W jaki sposób zakończyć wątek. Przykład:

1) Uruchamiam wątek - jest ok

System.Threading.Thread thread = null;

private void button1_Click(object sender, RoutedEventArgs e)

{

System.Threading.Thread thread = new System.Threading.Thread(ThreadMethod);

thread.Start();


}

2)Metoda :

private void ThreadMethod(object parameters)

{


while (true)

{

MessageBox.Show("test");

}

}

3) Chcę przerwać wątek na click

private void button2_Click(object sender, RoutedEventArgs e)
{

thread.Abort();

}

Problem jest przy przerwaniu. thread jest null. Jak to można rozwiązać?

Z góry dziekuję









__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow 5724 (20101222) __________

Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

http://www.eset.pl lub http://www.eset.com 
Re: thread
#21931
Author: 3P
Date: Wed, 22 Dec 2010 22:22
55 lines
1788 bytes
Dnia 22-12-2010 o 21:54:21 news.gazeta.pl <szymon.mitek@gazeta.pl>  
napisał(a):

> Pro¶ba o pomoc.
> W jaki sposób zakoñczyæ w±tek. Przyk³ad:
>
> 1) Uruchamiam w±tek - jest ok
>
> System.Threading.Thread thread = null;
>
> private void button1_Click(object sender, RoutedEventArgs e)
>
> {
>
> System.Threading.Thread thread = new  
> System.Threading.Thread(ThreadMethod);
>
> thread.Start();
>
>
> }
>
> 2)Metoda :
>
> private void ThreadMethod(object parameters)
>
> {
>
>
> while (true)
>
> {
>
> MessageBox.Show("test");
>
> }
>
> }
>
> 3) Chcê przerwaæ w±tek na click
>
> private void button2_Click(object sender, RoutedEventArgs e)
> {
>
> thread.Abort();
>
> }
>
> Problem jest przy przerwaniu. thread jest null. Jak to mo¿na rozwi±zaæ?
>
> Z góry dziekujê
>
Najpierw poczytaj o widoczności/zasięgu zmiennych, a potem bierz się za  
wątki.
W szczególności poczytaj co to zmienne lokalne.
Re: thread
#21932
Author: news.gazeta.pl
Date: Thu, 23 Dec 2010 08:13
81 lines
2661 bytes
Użytkownik "3P" <nospam@serwer.pl> napisał w wiadomości 
news:op.vn4y2yekmsp0fz@mcs...
> Dnia 22-12-2010 o 21:54:21 news.gazeta.pl <szymon.mitek@gazeta.pl> 
> napisał(a):
>
>> Pro?ba o pomoc.
>> W jaki sposób zakonczya w?tek. Przyk3ad:
>>
>> 1) Uruchamiam w?tek - jest ok
>>
>> System.Threading.Thread thread = null;
>>
>> private void button1_Click(object sender, RoutedEventArgs e)
>>
>> {
>>
>> System.Threading.Thread thread = new 
>> System.Threading.Thread(ThreadMethod);
>>
>> thread.Start();
>>
>>
>> }
>>
>> 2)Metoda :
>>
>> private void ThreadMethod(object parameters)
>>
>> {
>>
>>
>> while (true)
>>
>> {
>>
>> MessageBox.Show("test");
>>
>> }
>>
>> }
>>
>> 3) Chce przerwaa w?tek na click
>>
>> private void button2_Click(object sender, RoutedEventArgs e)
>> {
>>
>> thread.Abort();
>>
>> }
>>
>> Problem jest przy przerwaniu. thread jest null. Jak to mo?na rozwi?zaa?
>>
>> Z góry dziekuje
>>
> Najpierw poczytaj o widoczności/zasięgu zmiennych, a potem bierz się za 
> wątki.
> W szczególności poczytaj co to zmienne lokalne.

To raczej czeski błąd w definicji thread.
Oczywiście że miało być: thread = new
>> System.Threading.Thread(ThreadMethod);
Dzieki

>
> __________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur 
> wirusow 5726 (20101222) __________
>
> Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.
>
> http://www.eset.pl lub http://www.eset.com
>
> 



__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusow 5726 (20101222) __________

Wiadomosc zostala sprawdzona przez program ESET NOD32 Antivirus.

http://www.eset.pl lub http://www.eset.com 
Re: thread
#21933
Author: Macko
Date: Thu, 23 Dec 2010 08:48
52 lines
2385 bytes
On 22 Gru, 21:54, "news.gazeta.pl" <szymon.mi...@gazeta.pl> wrote:
> Pro ba o pomoc.
> W jaki spos b zako czy w tek. Przyk ad:
>
> 1) Uruchamiam w tek - jest ok
>
> System.Threading.Thread thread = null;
>
> private void button1_Click(object sender, RoutedEventArgs e)
>
> {
>
> System.Threading.Thread thread = new System.Threading.Thread(ThreadMethod);
>
> thread.Start();
>
> }
>
> 2)Metoda :
>
> private void ThreadMethod(object parameters)
>
> {
>
> while (true)
>
> {
>
> MessageBox.Show("test");
>
> }
> }
>
> 3) Chc przerwa w tek na click
>
> private void button2_Click(object sender, RoutedEventArgs e)
> {
>
> thread.Abort();
>
> }
>
> Problem jest przy przerwaniu. thread jest null. Jak to mo na rozwi za ?
>
> Z g ry dziekuj
>

Jeżeli chcesz wprowadzić jakąś interakcję użytkownika z wątkiem z
poziomu formatki (nie wiem naciska przycisk aby przerwać jakieś
czasochłonne obliczenia) to powinieneś się zainteresować
BackgroundWorkerem. Ma wiele dodatkowych funckji, których nie ma w
Threadzie na dzieńdobry jak raportowanie postępu.
Re: thread
#21934
Author: yamma
Date: Thu, 23 Dec 2010 20:05
28 lines
1854 bytes
news.gazeta.pl wrote:
> Prośba o pomoc.
> W jaki sposób zakończyć wątek. Przykład:
>
> 1) Uruchamiam wątek - jest ok
>
> System.Threading.Thread thread = null;
>
> private void button1_Click(object sender, RoutedEventArgs e)
>
> {
>
> System.Threading.Thread thread = new
> System.Threading.Thread(ThreadMethod);
> thread.Start();
>
>
> }

Po pierwsze, wątek, który uruchamiasz nie jest tym samym wątkiem, który 
zadeklarowałeś jako składową klasy. Po drugie Thread.Abort to nie jest 
najlepszy sposób aby zakończyć wątek. Generalnie, wątki powinny same 
decydować o tym kiedy się kończą. Najprościej przekazać wątkowi podczas 
startu jakąś zmienną, którą ten będzie sobie co jakiś czas sprawdzał. W 
starym dobrym MFC była klasa CWinThread, dzięki której można było obsługiwać 
wątki windowsowymi komunikatami, w .NET tego nie ma a szkoda.
Aha, przy okazji zainteresuj się słowem kluczowym lock.
yamma 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads