c#中两个不同的windows应用程序的通信

本文关键字:windows 应用程序 通信 两个 | 更新日期: 2023-09-27 17:54:38

有两个完全不同的c# windows应用程序(用于桌面)。一个应用程序在每次单击"开始"按钮时生成一个CSV(包含数据)。现在我需要将此CSV发送到另一个c#应用程序以使其处理通过。点击"开始"按钮,下面的事情应该依次发生:

  1. 创建CSV(包含输出数据,该数据由第一个应用程序生成)
  2. 创建的CSV应该在第二个应用中传递一个函数。
  3. CSV数据应在第二个应用程序中在该函数中处理。

我能够从第一个应用程序创建CSV(第一步已完成,请建议休息?)

c#中两个不同的windows应用程序的通信

由于无法更改第二个应用程序,因此唯一的选择是使用它已经支持的内容。您在注释中声明它可以接受文件名作为命令行参数。因此(可能唯一的)方法是让第一个应用程序启动第二个应用程序,并在命令行中提供CSV文件的路径。

首先,我将用第一个应用程序创建CSV文件,并将其存储在两个应用程序都可以访问的文件夹中。之后,您可以使用命令提示符窗口启动第二个应用程序并提供文件路径(以及其他必要的参数)。一旦能够启动第二个应用程序,就可以扩展第一个应用程序来创建流程。

主类是Process类。下面是一个你需要转换到实际情况的例子:

var csvPath = System.IO.Path.GetTempFileName(); // Use a temporary file
// ... Create CSV
try
{
    var pathToSecondApp = "C:''SecondAppFolder''SecondApp.exe";
    var psi = new ProcessStartInfo(pathToSecondApp);
    psi.Arguments = "-file '"" + csvPath + "'""; // command line arguments for the process
    using(var p = Process.Start(psi))
    {
        // Wait for process to complete
        p.WaitForExit();
        // Analyze return code 
        if (p.ExitCode != 0)
            throw new ApplicationException("Error running Second App");
    }
}
finally
{
    // Delete CSV
    System.IO.File.Delete(csvPath);
}

您可以尝试将函数从第二个应用程序提取到库项目(.dll文件)中。在您的两个应用程序中导入此DLL后,您将能够在第一个应用程序中使用该函数。

要在项目中导入。dll文件,只需在项目设置中单击"References"选项卡并选择"Add a Reference…"。

这不是两个应用程序之间的真正通信,但是如果您只想要一个像您描述的那样的应用程序行为,它可以解决您的问题。