Jeg vil gerne lave en activex Hvor jeg kan køre en en funktion uden at den kaldene klasse venter.. (ved ikke om dette giver nogen mening.... (spørg endelig hvis jeg ikke forklare mig godt nok)
et eksempel kan ses nedenfor:
private WithEvents objTest as minActiveX
public sub startMig
if ObjTest is nothing then set ObjTest = new minActiveX end if
objTest.DoStuff() 'kalde metode der kan tage flere minutter
end sub
public sub StopMig
if ObjTest is nothing then set ObjTest = new minActiveX end if
objTest.DontDoStuff() 'stopper metode der kan tage flere minutter
end sub
'Eventhandler Private Sub objTest_Finished(Counts As Long) MsgBox "Der er talt til: " & Counts End Sub
Jeg har nogen gange lavet det således at min ActiveX har en Command buffer. Jeg kunne derfor kalde ojbTest.Command("DoStuff") Sub kunne se således ud: (CmdBuf er en global Collection i din ActiveX)
Dim CmdBuf As New Collection
Public Sub Command(Name As String) CmdBuf.Add Name End Sub
Dette gør at dit kald til ActiveX'en returnere med det samme. Din ActiveX skal så stå og undersøge (måske 10 gange i sekundet) om der er noget i command bufferen:
Private Sub Timer1 If CmdBuf.Count > 0 then If CmdBuf.Item(1) = "DoStuff" Then 'Kald din DoStuff routine ElseIf CmdBuf.Item(1) = "DoNogetAndet" Then 'Kald DoNogetAndet EndIf
CmdBuf.Remove(1) EndIf End Sub
Endelig skal din ActiveX være af typen ActiveX.exe Håber du fatter max!
ActiveX'en skal være en der skal være tilgænglig for kunder, derfor syntes jeg ikke helt at løsningen holder...
jeg går og overvejer en flertrådsløsning med at wrapperklasse skrevet i dotNet..
men ville egentlig fortrække en pæn ren løsning i vb6
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.