2

我正在使用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);
    }
}
4

0 回答 0