我已经检查了这个问题:Codeplex NDde Server how to send multiple items,以及这个Alternative Of client.Advise += OnAdvise; 在处理这个问题时,在 vb.net NDDE和许多其他来源中;但是,似乎要么我不了解一些基础知识,要么我一直在尝试这样做的方式没有明确支持它。
我正在努力编写一个类库,它将一些值(大约六个)发送到一个最好使用 DDE 输入的应用程序,一次几个。
令我困惑的是,我是否需要做这样的事情,才能通过热链接发送我的物品
public AutoServer(string service, string ItemDataLabel)
: base(service)
{
// Create a timer that will be used to advise clients of new data.
_Timer.Elapsed += this.OnTimerElapsed;
_Timer.Interval = 30;
_Timer.SynchronizingObject = this.Context;
DataLabel = ItemDataLabel;
//OnAdvise(Symbol, DataLabel, 1);
}
private void OnTimerElapsed(object sender, ElapsedEventArgs args)
{
// Advise all topic name and item name pairs.
OnAdvise(Current, DataLabel, 1);
Advise(Current, DataLabel);
}
public string Data;
public string DataLabel;
}
并以这种方式将几个带有不同字符串标签的 OnAdvise 放在那里,写出 OnAdvise 在 OnAdvice 本身内部的每个标签组合的情况下应该做什么?
另一个选项似乎注册了几个服务器实例,并在 OnAdvice 中写出每种参数组合情况的所有详细信息。但最困难的来了。我尝试了这两种方法,但我收到异常消息:在创建窗口句柄之前,无法在控件上调用 Invoke 或 BeginInvoke。换句话说,我需要为每个服务器分别为每个项目提供一个上下文(所有具有多个 OnAdvices 的东西似乎都不起作用)。
那么将表单和上下文初始化放在一个单独的方法中是否正确?
例如:
namespace lookout_DDE
{
public partial class lookout_DDE_class : AutoGroup
{
public partial class ServerContextForm : Form
{
private DdeContext context = null;
private void ContextRunner()
{
context = new DdeContext(this);
context.Initialize();
}
}
}
}
和
namespace lookout_DDE
{
public partial class lookout_DDE_class : AutoGroup
{
public partial class ServerContextForm : Form
{
public ServerContextForm()
{
InitializeComponent();
ContextRunner();
}
}
}
}
和
[STAThread]
partial void RunServer()
{
using (ServerContextForm ContextForm = new ServerContextForm())
{
Application.Run(ContextForm);
ServerStarter("A1");
}
using (ServerContextForm ContextForm = new ServerContextForm())
{
Application.Run(ContextForm);
ServerStarter("A2");
}
using (ServerContextForm ContextForm = new ServerContextForm())
{
Application.Run(ContextForm);
ServerStarter("A3");
}
using (ServerContextForm ContextForm = new ServerContextForm())
{
Application.Run(ContextForm);
ServerStarter("A4");
}
using (ServerContextForm ContextForm = new ServerContextForm())
{
Application.Run(ContextForm);
ServerStarter("A5");
}
}
刚刚发现我必须保留表单才能运行上下文,因此需要使用单独的方法而不是使用单独的方法。
所以也许重申这个问题的最好方法是,我是否需要使用带有上下文的多个表单和注册的服务器实例,以便运行多个项目,或者我应该以某种方式在 Server 类中实现 OnAdvice?
看,我是 C# 和一般编程的新手,但是,我正在尝试“在这个过程中”学习编程。如果你能帮上忙,请指教。:)