我有兩個應用程序 - > App1和App2。 App1通過使用System.Diagnostic.Process()傳遞一些命令行參數來打開App2。用戶現在訪問App2。如何在C#中的兩個程序之間發送數據?
然而,當用戶更改應用1一些命令參數,我需要在不使用新的參數關閉它打開現有aplication(應用)。
我該怎麼做?
任何反饋意見將有幫助。
我有兩個應用程序 - > App1和App2。 App1通過使用System.Diagnostic.Process()傳遞一些命令行參數來打開App2。用戶現在訪問App2。如何在C#中的兩個程序之間發送數據?
然而,當用戶更改應用1一些命令參數,我需要在不使用新的參數關閉它打開現有aplication(應用)。
我該怎麼做?
任何反饋意見將有幫助。
您應該使用IPC。有關有用的鏈接,請參閱IPC Mechanisms in C# - Usage and Best Practices。
從技術上講,你重申了原來的問題,因爲IPC *是兩個不同進程之間的通信。通過你的鏈接,很明顯你指的是帶有WCF的IPC,這是解決這個問題的好辦法。 –
什麼你希望做的是不是直線前進。在.net中預先打包的方式稱爲Remoting,它內置在框架中並允許IPC(進程間調用)。
根據您的經驗水平,你可能會更好滾動這個你自己的簡化版本。例如有兩個程序使用文件傳遞數據。
應用1將參數寫入到一個文本文件(XML,分隔符,你的選擇真的)。
對App2的一個計時器,喚醒第二的每10個和檢查,看看是否有新的參數文件。如果是這樣,它會消耗它並刪除文件。
UPDATE
作爲正確地指出了由約翰·桑德斯,遠程處理已被WCF superseeded,但是仍然有大量的信息在那裏對Remoting的,它可能不上手不好的地方。
實際上,遠程處理已被棄用,以支持WCF。 –
@John:是的,我似乎記得正在宣佈。爲什麼我從來沒有邀請這些會議作出這些決定?這可能是一些過度勞累的微軟小夥子的疏忽,或者不久之後,所有那些過時的邀請都會發現我並涌入我的郵箱。 。 。現在的任何一天。 。 。 –
我相信WCF的學習曲線有些陡峭,但是期望的協議看起來非常簡單,應該有類似簡單通信的良好示例代碼。 –
我會去與WindowsFormsApplicationBase
類(從Microsoft.VisualBasic
裝配)用下面的代碼在我Program.cs
文件:
using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;
namespace TestSolution
{
sealed class Program : WindowsFormsApplicationBase
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] commandLine)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var program = new Program()
{
IsSingleInstance = Properties.Settings.Default.IsSingleInstance
};
// Here you can perform whatever you want to perform in the second instance
// After Program.Run the control will be passed to the first instance
program.Run(commandLine);
}
protected override void OnCreateMainForm()
{
MainForm = new ImportForm();
}
protected override bool OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
// This code will run in the first instance
return base.OnStartupNextInstance(eventArgs);
}
}
}
爲什麼不普通的舊的TCP/IP使用套接字(客戶端和服務器)。
我並不是要變得聰明或粗魯,而是標點符號是你的朋友。在上一個陳述中看到,我用了一個apostraphy,一個逗號和一個句號來幫助澄清我的意思。當他們不需要花時間研究你所要求的內容時,人們更願意提供幫助。 –
是的,標點符號是你的朋友,不要粗魯,但不是每個人都以英語作爲第一語言。 –
您應該嘗試更新問題標題,比如說「我如何在C#中的兩個程序之間發送參數?」對於看到你的問題的人來說,知道它是怎麼回事會有很多幫助。 – Danny