2009-07-19 11 views
2

Je suis bloqué en essayant d'élaborer des événements et des délégués. J'essaie de me connecter à une API externe qui renvoie des événements lorsque certains événements se produisent. Le code original a été écrit en C#, et j'essaye de le faire dans VB.NET.Délégués et événements de l'API VB.NET

Voici un court commentaire des programmeurs de l'API.

« Après cela, l'application client devrait avoir besoin d'attendre pour un des événements: OnLoginComplete ou OnLoginFailed Pour cause de connexion succesfull, toutes les collections sont déjà renseignés avec les données de session (états de commande et remplit, les positions de compte), de sorte que l'application Si une connexion est interrompue, l'événement OnDisconnected sera immédiatement déclenché, avertissant le client que les requêtes ne peuvent pas être traitées jusqu'à ce que la connexion soit restaurée
Sur un système d'ouverture de session réussi est prêt à traiter les demandes des clients : abonnements aux flux de prix et aux demandes de commandes. "

Je suis en train d'essayer o Faire en sorte que l'événement OnLoginFailed se déclenche mais il y a trop de problèmes qui ne sont pas sûrs, et passé de nombreuses heures à essayer de le résoudre.

Voici une courte note de la documentation de l'API.

OECClient.OnLoginFailed événement
lorsque la connexion ne l'air pourrait être establised, les informations d'identification sont fausses ou version de l'API client est invalide.

public event OnLoginFailedEvent OnLoginFailed; 

OnLoginFailedEvent délégué
Se produit lorsque la connexion a échoué à établir

public delegate void OnLoginFailedEvent(
    FailReason Reason 
); 

Et voici mon code dans VB.net, je sens que je suis proche mais je ne peux ne comprends pas.

Imports OEC.API 
Imports OEC.CommLib 

Public Class OpenECry 
    Public Shared OECClient1 As New OECClient() 

    Public Event OnLoginFailed() 
    Public Delegate Sub OEC_OnLoginFailedEvent(ByVal FailReason As OEC.Data.FailReason) 



    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click 
     If txbUsername.Text = Nothing Or txbPassword.Text = Nothing Or txbServer.Text = Nothing Then 
      'Connect to the server, if the details are wrong then show the error message in the label. 
      MsgBox("One of your required fields are empty, Please try again.", MsgBoxStyle.Critical, "Application Error") 
     Else 
      'Catch Exception 
      ' 
      Try 
       OECClient1.Disconnect() 
       OECClient1.Connect(txbServer.Text, txbPort.Text, txbUsername.Text, txbPassword.Text, False) 


      Catch ex As Exception 
       MessageBox.Show(ex.Message) 
      End Try 
     End If 
    End Sub 

End Class 

J'apprécierais vraiment si quelqu'un qui a plus d'expérience pourrait m'aider sur celui-ci. Tout ce dont j'ai besoin est un exemple, donc je peux faire tous les autres événements moi-même.

Répondre

0

Essayez de rendre votre méthode publique. Vous ne devriez pas avoir besoin des délégués et. Al., ceux-ci sont pour les personnes C# qui n'ont pas le paramètre Handles.

1

Vous devriez être capable de faire quelque chose comme.

Public Sub OnLoginFailure() Handles OECClient1.OnLoginFailedEvent 
    'Do something upon failure here... 
End Sub 
+0

Et OECCLient1 doit être déclaré WithEvents – Wilhelm

Questions connexes