DDE トランザクションにNDdeを使用しています。スレッドを使用して DdeClient の複数のインスタンスを作成しようとしています。この例では、3 つのスレッドがあると仮定します。単一のスレッドで試してみると、うまくいきます。しかし、2 を超えるとエラーが返され、アドバイス ループの開始に失敗しました。問題は、マルチスレッドで各スレッドに独自の「アドバイス」ハンドラーがある場合、なぜ機能しないのでしょうか? どんな助けも大いに役立ちます
私がしたこと: 1) ループで、Thread t = new Thread(CreateDdeThread); を呼び出しました。これは private void CreateDdeThread(object data) にリンクされています 2) private 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);
}
}