Wstrzymanie działania programu, ale tak że mogę kliknąć w inne elementy

0

Witam, jak wstrzymać program w c#?
Przykładowo, program wykonuje jakieś czynności i chce np w dowolnym momencie wstrzymać te czynności np gdy klikne w button Zatrzymaj i będę robił coś innego.

Bo np wstrzymanie aplikacji poprzez:
pętla i System.Windows.Forms.Application.DoEvents();
blokuje całe działanie programu, tak że aplikacja sie zatrzyma ale tak naprawdę to ona sie blokuje i nic nie da się zrobić.

Mam nadzieje że logicznie to napisałem i zrozumiecie mnie o co mi chodzi ;/

1

Wykonuj te "jakieś czynności" w osobnym Tasku. Główny wątek programu odpowiedzialny jest za GUI programu i nim nie wykonuj długich obliczeń bo mrozisz GUI. Microsoft zaleca przy WIN8 aby wszelkie operacje trwające dłużej niż 50ms wykonywane były w osobnym wątku

0

Te jakieś czynności to są obliczenia ale tak jak mówisz trwają i trwają.
Jak zrobić osobny wątek? dasz jakiś przykład? Bo nigdy czegoś takiego nie robiłem ;/

0

użyj Task.Run()

0

Nie podam ci gotowego rozwiązania bo ono uzależnione jest od : wersji frameworka, VisualStudio, czy potrzebujesz synchronizacji między wątkami, czy nie zachodzi problem "fabryka-odbiorcy" itp.
U wujka goole poszukaj informacji o TASK ( a co za tym idzie async/await ).
Jeden z linków http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx

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