MANTER UM SERVICO.

USUARIO.EXCLUIDOS 03/03/2005 13:43:41
#70951
Olá pessoal,
estou criando um Windows Service em VB, como ele vai ser rodado com a maquina sem logar então não posso ter Forms dentro do aplicativo. Coloquei um loop eterno com doevents para mante-lo no ar, mas esse loop está consumindo 100% do CPU, está certo que o doevents libera para que possamos usar outras aplicações, mas temo que esquente d+ o processador ou coisa parecida, alguem tem uma idéia para colocar no lugar desse loop eterno?
USUARIO.EXCLUIDOS 03/03/2005 13:53:56
#70954
Que tal um timer através da API Sleep
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Ex.:
Sleep 5000
USUARIO.EXCLUIDOS 03/03/2005 14:30:13
#70963
Valeu pela dica, mas estou fazendo conecções winsock e o Sleep me impede de conectar... eu preciso que o VB fique esperando eventos para trabalhar, e não saia do programa, com Form isso é fácil, sem eles não to achando um meio de fazer... é como se fosse um Sleep eterno que seja interrompido na chegada de um evento e depois de processa-lo ele volte a Sleep...

Renato Sucoski
ICHIHARA 03/03/2005 16:04:53
#70995
Voce esta fazendo conexoes? sem parar?
Pois se voce estiver aguardando uma solicitacao de conexao existe um evento e nao precisa ficar em loop.
Tem como colocar o trecho do codigo?
USUARIO.EXCLUIDOS 03/03/2005 16:44:23
#71004
A sub Main

Private Alvo As New clsFuncional

Sub Main()
Alvo.Abrir
Do While Alvo.Continua
DoEvents
Loop

End Sub

Agora a Classe Funcional...

Option Explicit

Private WithEvents Server As CSocketMaster
Private cClients() As clsClients
Private Cont As Integer
Private vContinua As Boolean

Public Property Get Continua() As Boolean
Continua = vContinua

End Property

Private Sub Class_Initialize()
Set Server = New CSocketMaster
Cont = 0
vContinua = True
End Sub

Public Sub Abrir()
Server.LocalPort = 3470
Server.Listen
End Sub

Private Sub Server_ConnectionRequest(ByVal RequestID As Long)
Dim A As Integer
Dim Usuario As String
Cont = Cont + 1
ReDim Preserve cClients(Cont)
Set cClients(Cont) = New clsClients
cClients(Cont).Aceita RequestID
End Sub
USUARIO.EXCLUIDOS 03/03/2005 17:39:50
#71013
Sim, tenho eventos... Mas se eu não fizer o loop, dae o programa termina, ele não fica esperando os eventos acontecerem... e não consigo colocar eventos em Módulo, só em classes...
USUARIO.EXCLUIDOS 04/03/2005 18:30:49
#71188
?
Tópico encerrado , respostas não são mais permitidas