Клиент не смог инициировать цикл извещения - PullRequest
2 голосов
/ 06 августа 2010

Я использую NDde для транзакций DDE.Я пытаюсь создать несколько экземпляров DdeClient с помощью потоков.Для этого примера мы предположим, что есть 3 потока.Если я попробую с одним потоком, это работает.Но все, что больше 2, возвращает мне ошибку, из-за которой не удалось запустить цикл извещения.Вопрос в том, почему он не будет работать, если он многопоточный и каждый поток имеет свой собственный обработчик «посоветовать»?Любая помощь будет очень полезна

Что я сделал: 1) В цикле я назвал Thread t = new Thread (CreateDdeThread);который связан с приватным void CreateDdeThread (данные объекта) 2) В приватном 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);
    }
}
...