Visual C# 2010 在两个项目之间进行通信

本文关键字:项目 两个 之间 通信 2010 Visual | 更新日期: 2023-09-27 18:37:28

我正在尝试创建一个Windows表单项目,并使用Kinect到Windows SDK的Kinect语音识别。我有

  • 表单申请项目(P1)和
  • Kinect 语音项目 (p2),这是一个命令提示符。

我把它设置为命令提示符,因为它是最简单的做事方法。无论如何,我已经阅读并发现了两件事。

1)我发现了如何在同一解决方案中同时运行两个项目。

2)我还发现了如何添加引用以将类从每个项目获取到另一个项目。

那么,我将如何从每个项目中获取变量呢?只是通过使用项目引用或其他东西?P2 可以识别语音并将其保存到变量中,如果这有什么意义的话。

Visual C# 2010 在两个项目之间进行通信

我把它设置为命令提示符,因为它是最简单的做事方法。

这听起来像是问题所在。听起来你应该考虑让你的 Kinect 项目成为一个类库。然后,您只需从 Windows 窗体应用程序调用该类库即可。

如果你想要一个"测试平台"控制台应用,你总是可以编写一个也引用类库的应用。

请注意,通常您不应该在项目之间共享变量 - 它们是大多数封装良好的系统中的实现细节 - 但您将创建公开属性、适当方法等的类型。

如果我理解正确,这里有几个选项:

  1. 然后将这些变量作为属性添加到类中

    using Solution.MyNamespace;在使用其他项目的类中

  2. 如果您有需要独立的变量,请考虑添加一个名为 Abstract 的类库项目或两个项目都引用的内容

我希望这可能会有所帮助,干杯

另一种方法是使用命名管道进行进程间通信。

MSDN 在此处提供了使用名称管道 API 的引用。

命名管道是 .NET 框架的一部分,是一种可靠的通信方法,无需担心文件的访问权限。

要沿着静态变量路径前进,您需要运行单个进程并将一个项目转换为 dll 并手动加载 Program Main。

当然,您甚至不需要使用静态变量,而是在加载时对传入的引用变量使用同步。如果您不需要运行两个单独的进程,我可能会使用此方法。

只是取决于你的目标是让项目分开的流程。

就像@JonSkeet说的,创建一个类库,然后你可以像这样保存信息:

    public class SpeechRecognizer
    {
        public List<string> SpeechRecognized = new List<string>
        {
        };
        public void SaveRecognizedSpeech(string foundSpeech)
        {
            SpeechRecognized.Add(foundSpeech);
        }
    }

在代码中:

        SpeechRecognizer sr = new SpeechRecognizer();
        sr.SaveRecognizedSpeech("blah blah");
        sr.SaveRecognizedSpeech("BLAH BLAH");
        Console.WriteLine("{0}, {1}", sr.SpeechRecognized[0], sr.SpeechRecognized[1]);
        Console.Read();

哦,让你的整个程序知道变量(我希望它们都在同一个解决方案中!)使它们public。希望这有帮助!