所以我正在尝试编写一个基本的自动收报机应用程序,用于从互联网上获取价格信息。我决定在visual basic中执行此操作,因为我对VBA和Visual Studio的免费副本有一些了解。
目前,我有一个具有计时器对象的表单模块。在每个tick(1秒间隔)上,我调用一个函数(在一个单独的模块中),它试图从API获取数据。这是通过将POST发送到HTTP地址并需要创建MSXML.XMLHTTP对象来完成的。我还需要创建另一个对象来散列我发送的一些签名和一个ScriptControl对象来解析JSON响应。
我的问题是,这些对象在每个tick上实例化都很糟糕?是否可以编写我的代码,以便在按下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
谢谢,如果需要任何其他信息来回答这个问题,请告诉我。
编辑:我想在每个时间间隔进行多次数据拉取函数调用。
阿尔钦
答案 0 :(得分:0)
每次通话都需要一个新的MSXML.XMLHTTP
对象。
但是用于发送POST的对象,存储散列签名的对象以及ScriptControl都可能被重用。
在每个刻度线上重新创建这些是否有害仍有待观察。在衡量相对于某个指标的当前绩效之前,您无法知道,这样您就知道自己是否达到了绩效目标。