我正在使用NDde进行DDE交易。我正在尝试使用线程创建DdeClient的多个实例。对于这个例子,我们假设有3个线程。如果我用一个线程尝试它,它的工作原理。但是超过2的任何东西都会给我一个错误,因为它无法启动建议循环。问题是,当它是多线程的并且每个线程都有自己的“建议”处理程序时,它为什么不起作用?任何帮助都会很棒
我做了什么: 1)在一个循环中,我调用了Thread t = new Thread(CreateDdeThread);链接到私有void CreateDdeThread(对象数据) 2)在private void CreateDdeThread(对象数据)中,我创建了一个带有必要事件处理程序的DdeClient。
private void CreateDdeThread(object data)
{
Console.WriteLine("CreateDdeThread");
Spark spark = (Spark)data;
DdeClient ddeClient = new DdeClient("Client", spark.GetClient() + ".Name");
ddeClient.Disconnected +=new
EventHandler<DdeDisconnectedEventArgs>(OnDisconnected);
ddeClient.Connect();
ddeClient.Advise += new EventHandler<DdeAdviseEventArgs>(OnAdvise);
ddeClient.StartAdvise(
"Address." + spark.GetStreet(), 1, true, true, 60000, ddeClient);
}
private void OnAdvise(object sender, DdeAdviseEventArgs args)
{
string[] p = args.Text.Split(new string[] { "\n" }, StringSplitOptions.None);
foreach (string s in p)
{
Console.WriteLine(s);
}
}