所以我正在尝试编写一个基本的股票应用程序来从互联网上获取价格信息。我决定在 Visual Basic 中执行此操作,因为我有一些 VBA 知识和 Visual Studio 的免费副本。
目前,我有一个具有计时器对象的表单模块。在每个滴答声(1 秒间隔)上,我调用一个函数(位于单独的模块中),试图从 API 获取数据。这是通过将 POST 发送到 HTTP 地址来完成的,并且需要创建一个 MSXML.XMLHTTP 对象。我还需要创建另一个对象来散列我发送的一些签名和一个 ScriptControl 对象来解析 JSON 响应。
我的问题是,这些对象在每次滴答时都被实例化是不是很糟糕?是否可以编写我的代码,以便在我按下 ON 按钮时实例化对象,并且拉取函数在每个刻度上使用这些现有对象?如果是这样,如何访问这些对象?
编辑:这是我认为我的代码应该看起来如何的简要概述:
在 Form1.vb 我有:
Imports System.Net
Imports System.Text
Imports System.IO
Imports System.Security.Cryptography
Public Class Form1
Public Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Application.DoEvents()
' I would like to pass the oXMLHTTP object here so that i can use it in the getPrice() function below, use it in there to send POST requests
Dim ticker_API As String = "https://example.com/api/"
Me.PriceBox.Text = getPrice(ticker_API)
End Sub
' on button starts timer
Public Sub OnButton_Click_1(sender As Object, e As EventArgs) Handles OnButton.Click
' start execution...
Timer1.Enabled = True
' I would like to instantiate the object here and use it by the getPrice() function
Dim oXMLHTTP As Object
oXMLHTTP = CreateObject("msxml2.xmlhttp")
End Sub
End Class
在 Module1.vb 我有 getPrice() 功能:
Module Module1
function getPrice(byval postURL as string, byval oXMLHTTP as object) as string
Dim argumentString as String
With oXMLHTTP
.Open("POST", postURL, False)
.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)")
.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
.send(argumentString)
Return .responseText
End With
End Function
End Module
谢谢,如果需要任何其他信息来回答问题,请告诉我。
编辑:我想在每个间隔进行多个数据拉取函数调用。
阿门