通信b / w c#中的两个不同的Windows应用程序

时间:2015-06-09 07:56:40

标签: c# winforms

有两个完全不同的c#windows应用程序(用于桌面)。一个应用程序每次启动时都会生成一个CSV(带数据)"按钮点击。 现在我需要将此CSV发送到另一个c#应用程序以使其进行处理。 点击"开始"按钮后面的按钮应按顺序发生:

  1. 创建CSV(包含输出数据,此数据由第一个应用程序生成)
  2. 创建的CSV应该通过第二个应用程序中的函数。
  3. CSV数据应在第二个应用程序中处理该功能。
  4. 我可以从第一个应用程序创建CSV(第一步是完成,请建议休息?)

2 个答案:

答案 0 :(得分:1)

由于您无法更改第二个应用程序,因此您唯一的选择是使用它已支持的内容。您在评论中声明它可以接受文件名作为命令行参数。所以(可能只有)方法是让第一个应用程序启动第二个应用程序并在命令行中提供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);
}

答案 1 :(得分:0)

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

要在项目中导入.dll文件,只需转到"参考文献"在项目设置中选择"添加参考..."。

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