Tôi có chức năng triển khai ứng dụng khách DDE bằng cách sử dụng Win Api trong C#. Mọi thứ hoạt động tốt trong trường hợp tôi gọi DdeInitializeW
và DdeConnect
trong một chuỗi. Cụ thể, đây là những định nghĩa wrapper:C# Giành kết nối Api DDE đa luồng
[DllImport("user32.dll")]
protected static extern int DdeInitializeW(ref int id, DDECallback cb, int afcmd, int ulres);
[DllImport("user32.dll")]
static extern IntPtr DdeConnect(
int idInst, // instance identifier
IntPtr hszService, // handle to service name string
IntPtr hszTopic, // handle to topic name string
IntPtr pCC // context data
);
Nếu tôi gọi DdeInitializeW
và DdeConnect
trong chủ đề khác nhau, DdeConnect
trở vô con trỏ.
Ngoài ra, nếu tôi gọi cả hai (kết nối DDE được thiết lập) trong một luồng, tôi không thể sử dụng kênh DDE này trong một chủ đề khác (tôi đang gặp lỗi INVALIDPARAMETER
DDE).
Như tôi đã nói, mọi thứ hoạt động không có vấn đề gì trong chuỗi đơn lẻ.
Đây chính xác là cách tôi đang thực hiện tại thời điểm này. OK Tôi sợ rằng đây là vấn đề của chính DDE. Cảm ơn bạn rất nhiều vì đã đảm bảo cho tôi. – Majak
Ngoài ra, mẹo nếu bạn không làm điều đó: Theo dõi nhiều cuộc hội thoại DDE bằng cách cho mỗi cuộc hội thoại một id duy nhất, sử dụng 'DdeSetUserHandle' và' DdeQueryConvInfo'. Điều này đơn giản hóa mọi thứ rất nhiều. https://msdn.microsoft.com/en-us/library/windows/desktop/ms648765(v=vs.85).aspx – Ben