多个主题和项目的NDde服务器和上下文。我需要多个实例吗?

时间:2017-08-06 20:58:05

标签: c# dde ndde

在处理此问题时,我已经检查了这个问题:Codeplex NDde Server how to send multiple items,以及此Alternative Of client.Advise += OnAdvise; in vb.net NDDE和其他一些来源;然而,似乎要么我不理解一些基础知识,要么就像我一直试图做的那样,它没有明确支持。

我正在努力编写一个类库,它会将一些值(大约六个)发送到一个最好消耗DDE imputs的应用程序,一次几个。

困扰我的原因是,我是否需要做这样的事情,能够通过热门链接发送我的物品

import numpy as np
list1=[1,2,3]
list2=[4,5,6]
np.add(list1,list2)

}

并以这种方式放置几个带有不同字符串标签的OnAdvises,在OnAdvice本身内写出On Advise应该做的每个标签组合的事情?

另一个选项似乎注册了几个Server实例,并在OnAdvice中写出了每种参数组合的所有细节。 但最困难的是这里。我尝试了两种方法,并且我得到的异常是:在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke。换句话说,我需要为每个服务器分别为每个项目提供一个Context(所有具有多个OnAdvices的东西似乎都不起作用)。

那么将表单和上下文初始化放在一个具有相应服务器注册的方法中是否正确,并且这些项目的方法也是如此,并且一次运行它们?

例如:

        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;

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();
            }
        }
    }
}

刚想通知我必须保留要运行的上下文的表单,所以不需要使用\ separate \ separate方法。

因此,重述问题的最佳方法可能是,我是否需要在上下文中使用多个表单,并注册服务器实例,以便运行多个项目,或者不知何故我应该在Server类中实现OnAdvice?

看,我是C#的新手和一般的编程,但是,我正在努力学习编程"在过程中#34;。如果您能提供帮助,请咨询。 :)

1 个答案:

答案 0 :(得分:0)

直到现在找出部分解决方案: 1)需要有几个Server实例,因为OnAdvice可以由客户端应用程序订阅一次。 (如果你没有写它,谁知道它是怎么做的) 2)每个服务器可以分别需要一个单独的(优选的)上下文和一个表单,但是可能存在单个上下文。没有测试最后一个。

现在,我回忆起一个关于单词"可能"的坏/好玩笑。你猜怎么着。 很遗憾没有任何意见!