Професионална програма
Loading...
+ Нов въпрос
CharlieScarver avatar CharlieScarver 33 Точки

[C# OOP] Events - Timer

Искам да попитам за третата задача от домашното за делегати и евенти.
Тази част от условието предполагам забранява Thread.Sleep():

  • The main program's execution should NOT be paused at any time (use some kind of background execution).

Как по друг (интелигентен) начин може да се забави програмата без да е спряна нишката?

Аз имам един празен цикъл до голямо число -.-

Благодаря

Тагове:
0
C# OOP Basics
a_rusenov avatar a_rusenov 1103 Точки
Best Answer

Не трябва да блокираш main thread-a. В такъв случай таймерът трябва да се изпълнява на втори (background) thread. А него можеш да си го блокираш както искаш. Желателният начин е с Thread.Sleep(), както каза Фил. В никакъв случай не пускай блокиращи цикли, понеже:

1. На различни компютри различно бързо ще приключат

2. Хабиш излишно процесорно време в чакане и то много. За сравнение пусни един while (true) и виж какво става в task manager-a :)

2
14/12/2015 14:50:23
Filkolev avatar Filkolev 4485 Точки

Да спираш нишката означава в случая да я блокираш, докато изчаква друга нишка да приключи. Ако искаш нещо да се случва през определен интервал не виждам разрез с условието да ползваш Thread.Sleep. Това паузиране е част от логиката по изпълнение на инструкциите в самата нишка, не е предизвикано от блокираща операция от друга нишка.

1