Страница: 1 | 2 | 
		
		 
			   
			 
			 
			 
			 
			
 
  
		
     
  
    
Вопрос: Как Усыпить действие  на время.не через sleep. Vb6
     
    
Добавлено: 12.08.10 12:29
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 LEX1ERS | ICQ: 4204936 
      
       
  
Всем доброго дня. Хотел бы спросить как усыпить определеное действие на время, но в тоже время что бы программа была активна (допустим те же включенные таймеры) например:
 
    
If upload = true then
Усыпить процедуру или же if на - 3 секунды
Else
Усыпить на 10 секунд
End if
При  этом мне не нужно использовать апи функцию sleep, ибо у меня находятся рабочие таймеры. Спасибо. 
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 30
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #1
       
Добавлено:  12.08.10 14:18
       
    
       
  
С какой целью ты усыпляешь?
 
    
В VB6 весь код выполняется в потоке UI, поэтому любая попытка что-то усыпить усыпит все приложение.
Чтоб усыпить какой-то код на время, при этом не затрагивая поток UI, нужно использовать многопоточность (возможно в VB .NET, сложно в VB6).
Может тебе можно как-то обходным путем сделать? Например сделать цикл с усыплением на 50 мс и вызовом Application.DoEvents, и далее проверка, прошло время "сна" или нет, если не прошло, снова усыпляешь на 50 мс. Криво, но визуально будет выглядеть так буд-то приложение не зависло.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 AWP
![]()
ICQ: 345685652 
Вопросов: 96
Ответов: 1212
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  12.08.10 14:57
       
    
       
  
ну 
    
усыпит не трогая таймеры, но загружает при этом проц(или ядро) по полной.
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  12.08.10 15:15
       
    
       
  
Профит:
 
    
Усыпит не трогая таймеры и не загружая ядро.
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 VbStarter
![]()
ICQ: 357911808 
Вопросов: 118
Ответов: 1340
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  12.08.10 17:56
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #5
       
Добавлено:  12.08.10 20:31
       
    
       
  
Не будет корректно работать если одновременно в нескольких местах захочет себя усыпить
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
      
 Web-сайт:  
 Профиль |  | #6
      
Добавлено:  12.08.10 22:21
       
    
       
  
Мдя. Без многопоточности тут сразу приходят в голову два выхода. Первый уже написан, по сути - слипы будут накладываться друг на друга и выбираться самый длинный слип. Второй вариант - каждый вызов MySleep во время выполнения другого MySleep добавляет время ожидания. Если вася запустил слип на 1 секунду и через полсекунды, недождавшись, запустил еще один слип на 2, то в итоге отклик будет через 2,5 секунды. Вот, собственно, слип.
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
 Eugy
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Вопросов: 0
Ответов: 73
      
 Профиль |  | #7
       
Добавлено:  15.08.10 02:39
       
    
       
  
Timer с боем курантов обнулится и Do While зависнит на сутки 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #8
       
Добавлено:  15.08.10 12:40
       
    
       
  
Мышки плакали, кололись, но продолжали грызть кактус
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа:
 AgentFire
![]()
![]()
![]()
ICQ: 192496851 
Вопросов: 75
Ответов: 3178
      
 Профиль |  | #9
       
Добавлено:  15.08.10 13:07
       
    
       
  
:D
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа:
 EROS
![]()
![]()
![]()
![]()
Вопросов: 58
Ответов: 4255
 Профиль |  | #10
       
Добавлено:  15.08.10 13:16
       
    
       
  
 
    
Это ты про многопоточность в VB6?
Нихрена не выходит обойтись без многопоточности но все равно пишут на VB6?
		
	  
			 
	
		 
    
       
    
Номер ответа: 11 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #11
       
Добавлено:  15.08.10 14:06
       
    
       
  
Да они вроде даже какую-то многопоточность за 13 лет умудрились смастерить, правда постоянно падает и отладчик глючит, но они все равно пруццо
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 12 
      
Автор ответа:
 Smith
![]()
![]()
![]()
![]()
ICQ: adamis@list.ru 
Вопросов: 153
Ответов: 3632
      
 Профиль |  | #12
       
Добавлено:  15.08.10 16:33
       
    
       
  
 
    



		
	  
			 
	
		 
    
       
    
Номер ответа: 13 
      
Автор ответа:
 VbStarter
![]()
ICQ: 357911808 
Вопросов: 118
Ответов: 1340
      
 Web-сайт:  
 Профиль |  | #13
      
Добавлено:  16.08.10 20:30
       
    
       
  
в примерах есть пногопоточность...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 14 
      
Автор ответа:
 VβÐUηìt
![]()
![]()
![]()
Вопросов: 246
Ответов: 3333
      
 Web-сайт:  
 Профиль |  | #14
      
Добавлено:  16.08.10 21:32
       
    
       
  
Надо замутить прогу, генерирующую обертку всех неймспейсов фраемворка в один жирный класс для VB6. Тогда можно будет писать под фраемворк на VB6.
 
    
Бо?
PS: Или кто-то это уже придумал?
:D
		
	  
			 
	
		 
    
       
    
Номер ответа: 15 
      
Автор ответа:
 Artyom
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #15
       
Добавлено:  17.08.10 09:38
       
    
       
  
Go and be that man