|
Как заставить таймер не выполняться, если предыдущее выполнение не завершено
|
|||
---|---|---|---|
#18+
Public Sub New() ' This call is required by the Windows Form Designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. t = New Timer(10000) AddHandler t.Elapsed, New System.Timers.ElapsedEventHandler(AddressOf Me.t_elapsed) End Sub Protected Sub t_elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Try Dim katalog PrintLog2("Служба запущена" & Date.Now.Date.ToString()) katalog = ScreenDay("e:\SCREENSHOTS") 'Archive(katalog) Catch ex As Exception Dim path As String = "c:\logXXX.txt" Dim tw As StreamWriter = New StreamWriter(path, True) tw.WriteLine(ex.ToString) Dim inner As Exception = ex.GetBaseException tw.WriteLine(inner.Message.ToString) tw.Close() End Try Таймер используется в сервисе, вб2010, как сделать так , чтобы он не выполнялся, пока не закончится предыдущее выполнение, а то ерунда вообще получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 15:02 |
|
Как заставить таймер не выполняться, если предыдущее выполнение не завершено
|
|||
---|---|---|---|
#18+
crazyara, используйте вместо таймера цикл в фоновом потоке и Thread.Sleep(10000). ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 15:11 |
|
Как заставить таймер не выполняться, если предыдущее выполнение не завершено
|
|||
---|---|---|---|
#18+
1. Использовать lock 2. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 15:18 |
|
Как заставить таймер не выполняться, если предыдущее выполнение не завершено
|
|||
---|---|---|---|
#18+
Можно внутри Elapsed в первой строке останавливать таймер, а в последней - снова запускать ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2014, 16:42 |
|
Как заставить таймер не выполняться, если предыдущее выполнение не завершено
|
|||
---|---|---|---|
#18+
crazyara, я бы завернул это в класс. Например, такой: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Мы пользуемся тем фактом что System.Threading.Timer дает возможность создат действие выполняющееся один раз. Как только оно заканчивается мы перезапускаем его. Таким обрзхом два действия никогда не наложатся друг на друга. Класс еще нужно улучшить добавив в него остановку действия. Использование: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2014, 21:00 |
|
|
start [/forum/topic.php?fid=20&gotonew=1&tid=1402593]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 335ms |
total: | 477ms |
0 / 0 |