我正在使用名为 WindAPI 的API,它提供了来自中国市场的财务数据。此API 提供了一个方法调用wsq(),它将通过回调函数向用户的程序提供 RealTime 价格数据!
我在c#中编写了一些简单的代码,尝试使用这个wsq()方法,但没有得到任何结果。我想知道代码中一定有一些错误,但是找不到它! 我是C#和编程的新手,所以如果这是一个新手的错误,不要嘲笑我:)
这是代码,我会尽可能多地给出评论,这样你就可以快速找到误解。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//-----------------------------
using WAPIWrapperCSharp; //the namespace in API dll(official provided)
using WindCommon; //the namespace to process the data formats (official provided)
namespace WSQ2String
{
class WSQ2StringSample
{
static void Main()
{
Console.Write("Begin......");
Console.ReadLine();
//--------------------creat the new API object and log on
WindAPI w = new WindAPI();
Console.WriteLine("New API created!");
w.start();
Console.WriteLine("API log on!");
//--------------------request for the realtime data through w.wsq() method
int errorId = 0;
ulong reqId = w.wsq(ref errorId, "150195.sz", "rt_date, rt_time, rt_lastest", "", myCallback);
Console.WriteLine("errorId = {0}", errorId);
//----adding a control line which will stop the main program and wait for myCallback function to be called
Console.ReadLine(); //after the data arrived, the test is over, and we press a key to let the main program continue
w.cancelRequest(reqId);
w.stop();
Console.Write("End......");
Console.ReadLine();
}
//----
static void myCallback(ulong reqId, WindData wd)
{
Console.WriteLine("wsq data gotback......");
//----transfer the official WindData format to String, and output to the screen
string s = WindDataMethod.WindDataToString(wd, "wsq"); //the method is in WindCommon namespace
Console.Write(s);
}
}
}
我的理解是,当我使用w.wsq()请求数据服务时,当价格发生变化时(那是事件),myCallback()将被调用并导出数据屏幕!
我添加readline()的原因是为了防止主程序运行得太快,并在事件发生前结束(价格变动)。在那种情况下,myCallback()将无法被调用!
但是当我运行代码时,在“errorId = 0”显示之后,我等了好几分钟仍然没有结果!我确认价格已经改变(通常在几秒钟内改变)。
这是我得到的结果,我找不到原因....(我只是在屏幕上输入行)
>>Begin......
>>New API created!
>>API log on!
>>errorId = 0
然后prgram只是停在那里而没有发生任何事情! 如果有人能向我解释,我会非常感激....
先谢谢你了!
更新: 根据下面的评论,我给出了解决方案的zip文件。 还有API dll和它的源代码。
所以,有人帮忙吗?