Делегаты и события API VB.NET - PullRequest
2 голосов
/ 19 июля 2009

Я застрял, пытаясь отработать события и делегатов. Я пытаюсь подключиться к внешнему API, который возвращает события, когда происходят определенные события. Оригинальный код был написан на C #, и я пытаюсь сделать это в VB.NET.

Вот небольшой комментарий от программистов API.

"После этого клиентскому приложению необходимо дождаться одного из событий: OnLoginComplete или OnLoginFailed. В случае успешного входа в систему все коллекции уже заполнены данными сеанса (состояниями заказов и заполнений, позициями счетов), поэтому приложение может отображать их в графическом интерфейсе. Если по какой-либо причине соединение разорвано, событие OnDisconnected будет запущено немедленно, сообщая клиенту, что запросы не могут быть обработаны, пока соединение не будет восстановлено.
При успешном входе в систему система готова обрабатывать клиентские запросы: подписки на ценовые потоки и запросы заказов. «

Я пытаюсь запустить событие OnLoginFailed, но у меня слишком много проблем, не уверенных в том, как это сделать, я потратил много часов, пытаясь его решить.

Вот краткое примечание из документации API.

OECClient.OnLoginFailed Событие
Возникает, когда невозможно установить соединение, неверные учетные данные или неверная версия API клиента.

public event OnLoginFailedEvent OnLoginFailed;

OnLoginFailedEvent Делегат
Происходит, когда не удалось установить соединение

public delegate void OnLoginFailedEvent(
    FailReason Reason
);

А вот мой код на VB.net, я чувствую, что я близко, но просто не могу его получить.

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

Я был бы очень признателен, если бы кто-то, у кого больше опыта, мог бы помочь мне в этом. Все, что мне нужно, это один пример, чтобы я мог сам делать все остальные события.

Ответы [ 2 ]

1 голос
/ 20 июля 2009

Вы должны быть в состоянии сделать что-то вроде.

Public Sub OnLoginFailure() Handles OECClient1.OnLoginFailedEvent
     'Do something upon failure here...
End Sub
0 голосов
/ 19 июля 2009

Попробуйте сделать ваш метод публичным. Вы не должны нуждаться в делегатах. al., это для людей C #, у которых нет параметра Handles.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...