2015-06-09 71 views
0

有2個完全不同的c#windows應用程序(用於桌面)。每次點擊「開始」按鈕時,一個應用程序就會生成一個CSV(包含數據)。 現在我需要將此CSV發送到另一個c#應用程序以使其通過。的「開始」按鈕下列事情應該在序列發生 的OnClick:通信b/w兩個不同的windows應用程序在c#

  1. 創建CSV(與輸出數據,並且由第一應用生成此數據)
  2. 創建CSV應該通過在第二應用程序中的功能。
  3. CSV數據應在第二個應用程序中處理該功能。

我能夠從第一應用程序創建CSV(第一步完成後,請建議休息?)

+0

FileSystemWatcher的或某種IPC的... –

+0

你能夠改變的第二個應用程序?它是否接受一個文件名作爲命令行參數? – Markus

+0

不,我無法從第一個應用程序中更改第二個應用程序。是的,它接受一個文件名作爲命令行參數,但我需要從第一個應用程序調用它。 – Shubh

回答

0

你可以嘗試從你的第二應用到librairy項目提取功能(.dll文件)。在這兩個應用程序中導入此DLL之後,您將能夠在第一個應用程序中使用該功能。

要導入項目中的.dll文件,只需進入項目設置中的「參考」選項卡並選擇「添加參考...」。

這不是兩個應用程序之間的真實通信,但它可以解決您的問題,如果您只需要像您描述的應用程序行爲。

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); 
} 
相關問題