i get a error cross thread operation not valid when it is trying to
write to the textfield.
void appendToTextBox(string str){
i have a feeling that the delegates run in a different thread and when
the events are triggered, they are trying to write to the form thread.
i guess C# does not like it. how do i fix it.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Krs.Ats.IBNet;
using Krs.Ats.IBNet.Contracts;
namespace collectTickData
{
public partial class Form1 : Form
{
private static IBClient client;
public Form1()
{
InitializeComponent();
}
private void appendToTextBox(string str){
textBox1.Text += str + "\r\n";
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
client = new IBClient();
client.ThrowExceptions = true;
client.Error += client_Error;
client.TickPrice += client_TickPrice;
client.TickSize += client_TickSize;
Console.WriteLine("Connecting to IB.");
client.Connect(textBox1.Text, Int32.Parse(textBox2.Text),
10);
//Forex Test
Forex EUR = new Forex("EUR", "USD");
client.RequestMarketData(17, EUR, null, false);
}
void client_TickSize(object sender, TickSizeEventArgs e)
{
appendToTextBox("Tick Size: " + e.Size + " Tick Type: " +
EnumDescConverter.GetEnumDescription(e.TickType));
}
void client_Error(object sender, ErrorEventArgs e)
{
appendToTextBox("Error: " + e.ErrorMsg);
}
void client_TickPrice(object sender, TickPriceEventArgs e)
{
appendToTextBox("Price: " + e.Price + " Tick Type: " +
EnumDescConverter.GetEnumDescription(e.TickType));
}
}
}