我正在使用NDde进行 DDE 事务。我正在尝试使用线程创建多个 DdeClient 实例。对于这个例子,我们假设有 3 个线程。如果我用一个线程尝试它,它可以工作。但是超过 2 的任何东西都会给我一个错误,即它无法启动建议循环。问题是为什么当它是多线程的并且每个线程都有自己的“建议”处理程序时它不起作用?任何帮助都会非常有用
我做了什么:1)在一个循环中,我调用了 Thread t = new Thread(CreateDdeThread); 它链接到私有 void CreateDdeThread(object data) 2) 在私有 void CreateDdeThread(object data) 中,我创建了一个带有必要事件处理程序的 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);
}
}