Skocz do zawartości

Wykonywanie voida co sekundę


Rekomendowane odpowiedzi

Cześć,

mam takie pytanie,

jak zrobić wykonywanie jednego voida co np. sekunde, ale program nie może być zamrożony.

Podczas wykonywania tego voida, potrzebuje mieć możliwość zmiany liczb itd. w formach Visual C#

Potrzebuje jakiś Timer który nie zamraża. Czyli

GML
Thread.Sleep(1000);
odpada...

 

Mój void:

GML
private void ActualizeScene()

{

for (int i = 0; i < 5; i++)

{

myport.WriteLine(color_Rr.ToString() + ";" + color_Gg.ToString() + ";" + color_Bb.ToString());

Thread.Sleep(1000);

 

}

}

Odnośnik do komentarza
Udostępnij na innych stronach

Jest to możliwe za pomocą tasków oraz bezpośrednio wątków. odpalasz tę funkcję w osobnym tasku/wątku, jednocześnie zakładając locka na czas odpalania tej funkcji, oraz na czas dostępu do tablicy z normalnego wątku (żebyś nie zapisywał czegoś przypadkiem w dwóch wątkach na raz).

Odnośnik do komentarza
Udostępnij na innych stronach

Jest to możliwe za pomocą tasków oraz bezpośrednio wątków. odpalasz tę funkcję w osobnym tasku/wątku, jednocześnie zakładając locka na czas odpalania tej funkcji, oraz na czas dostępu do tablicy z normalnego wątku (żebyś nie zapisywał czegoś przypadkiem w dwóch wątkach na raz).

 

To jest takie coś: System.Threading.Tasks ?

I tam jest chyba:

GML
Delay( INT ) albo yield(int)

I nie powinno to mi zamrażać programu, żeby można było klikać w przyciski, wpisywać coś w textboxach i zmieniać kolory?

Czy to będzie wtedy t.zw. asynchroniczny program?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak, będzie to program asynchroniczny, czyli nie wiesz co będzie się działo w twoim głównym programie kiedy będzie się wykonywał kod wątku, w związku z czym musisz dbać o to by np twój główny kod nie pisał do tych samych zmienny co wątek w tym samym czasie.

Można też zrobić by mimo używania wątków wykonanie programu tak naprawdę nie było asynchroniczne, ale wtedy trzeba się trochę pobawić.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...