我一直在尝试运行stockbotprogramming http://www.stockbotprogramming.com/sharpcibtutorial1.php教程提供的示例项目,但每次运行应用程序时都会遇到COMException。
我运行了TWS客户端,随API提供的示例VB项目能够很好地连接,但是当我尝试使用本教程提供的C#示例时,我得到以下异常:
未处理的类型异常 'System.Runtime.InteropServices.COMException' 发生在System.Windows.Forms.dll
中
当我尝试添加TWS ActiveX控件时发生异常:
namespace CSharpTutorial1
{
public partial class Form1 : Form
{
private AxTWSLib.AxTws tws;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
tws = new AxTWSLib.AxTws();
tws.BeginInit();
tws.Enabled = true;
tws.Location = new System.Drawing.Point(32, 664);
tws.Name = "tws";
Controls.Add(tws); // <-- EXCEPTION HERE!
tws.EndInit();
tws.connect("127.0.0.1", 7496, 0);
String msg = "Connected to TWS server version " + tws.serverVersion + "at " + tws.TwsConnectionTime;
MessageBox.Show(msg);
}
}
}
最初的项目可能是用Visual Studio 2005完成的,但是我有Visual Studio 2008并且它自动转换了项目(我一直在阅读那里有一些问题)。有人知道可能导致这种异常的原因吗?关于如何解决它的任何想法?
答案 0 :(得分:2)
重要说明:确保使用可视化设计器将组件添加到IDE。首先右键单击工具箱,单击“选择项目”,单击COM选项卡,然后检查TWS控件。现在使用可视IDE将此项目拖动到表单的表面。它必须在您的应用中可见。 (不要在Form1_Load()
)
做这样的事情......(不要使用127.0.0.1的IP地址,留空):
axTws1.connect("", 7496, 0);
axTws1.reqMktData(0, "AMD", "STK", "", 0, "", "", "SMART", "ISLAND", "USD", "", 0);