我有两个应用程序 - > 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