Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Про dll'ки
     
    
Добавлено: 08.09.04 17:24
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
    
 Mihalыch | ICQ: 373-509-101 
      
       
  
Подскажите, кто может!!! Вопрос такой: есть dll’ка, в которую передаю данные, после чего она пишет их  в базу данных. Можно ли после передачи ей данных отсоединиться от неё, типа пусть она себе пишет в базу а я займусь “тякучкой”. Ведь если Set dllName = Nothing, то она и не запишет ни чего, или нет?
 
    
Всем заранее спасибо!
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 8
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа:
 CyRax 
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 204447456 
Вопросов: 180
Ответов: 4229
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  08.09.04 19:34
       
    
       
  
А DLL-ка на чём?
 
    
 Можно только в одном случае - если создаёт отдельный поток для своих вычислений. При загрузке библиотека становится частью программы. Т.е. программа увеличивается на размер библиотеки. В общем ты понял что будет при её отсоединении.
 Может быть можно создать для неё временный процесс. Тогда она будет выполняться в потоке этого процесса и не будет усыплять основную программу.
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа:
 cresta
![]()
![]()
Вопросов: 117
Ответов: 1538
      
 Профиль |  | #2
       
Добавлено:  08.09.04 19:46
       
    
       
  
А что такое dllName? Переменная? Если да, то какое имеет отношение переменные к выполнению процедуры в dll? Да и не видя кода, что можно посоветовать? Как вызываешь? Что в dll? Возвращаются какие-либо данные или нет?
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа:
 Mihalыch
![]()
![]()
![]()
ICQ: 373-509-101 
Вопросов: 56
Ответов: 330
      
 Профиль |  | #3
       
Добавлено:  08.09.04 20:06
       
    
       
  
dllName – я имел ввиду это:
 
    
    
im WithEvents dbdrv As TestDbDriver
    Set dbdrv = New TestDbDriver
	For i=0 to Ubound(aMass)
	‘сдесь в цикле передаются данные
	Next i
	 dbdrv.SaveResults ’команда на сохранение
	 ‘ вот здесь программа подвисает, пока не закончится сохранение данных 
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа:
 Mihalыch
![]()
![]()
![]()
ICQ: 373-509-101 
Вопросов: 56
Ответов: 330
      
 Профиль |  | #4
       
Добавлено:  08.09.04 20:12
       
    
       
  
З.Ы. Совсем забыл в жизни будет так, модуль передающий данные находится на одном компьютере а dll’ка и база данных на другом. Правда в таком варианте еще не испытывал, дома нет сети, пробовать пойду завтра.	
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #5
      
Добавлено:  08.09.04 20:35
       
    
       
  
Для этого существуют потоки, но они не для VB  
    
И как ты можешь отключить длл, пока она не возвратит управление твоей программе?
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа:
 Mihalыch
![]()
![]()
![]()
ICQ: 373-509-101 
Вопросов: 56
Ответов: 330
      
 Профиль |  | #6
       
Добавлено:  08.09.04 20:53
       
    
       
  
Я имел ввиду не отключить, а как то передать управление обратно программе, как например это может делать ф-я PlaySound  если ей передать флаг SND_ASYNC. DoEvents тоже не помогла. Ладно придется ProgressBar попросить. 
 
    
Всем спасибо!
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа:
 sne
![]()
![]()
![]()
![]()
![]()
Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #7
      
Добавлено:  08.09.04 21:31
       
    
       
  
СОздавай, скажем, dll файл на другом языке, скажем Си, создай там поток отдельный и выполни в нем нужный тебе код... Готового решения нет...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа:
 Comanche
![]()
![]()
![]()
![]()
![]()
Вопросов: 87
Ответов: 459
      
 Профиль |  | #8
       
Добавлено:  09.09.04 12:42
       
    
       
  
http://www.vbaccelerator.com/home/VB/Code/Libraries/Threading/Multi-threading_using_classes_in_ActiveX_EXEs/article.asp