Я застрял, пытаясь отработать события и делегатов. Я пытаюсь подключиться к внешнему 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
Я был бы очень признателен, если бы кто-то, у кого больше опыта, мог бы помочь мне в этом. Все, что мне нужно, это один пример, чтобы я мог сам делать все остальные события.