Я хочу общаться между двумя процессами через IP C связь. Я сделал 2 проекта «A» и «B» с помощью winform.
Я хотел бы сделать, если я введу каждое число в текстовое поле «Процесс A» и нажму кнопку «Установить», чтобы отобразить дополнительные значения два числа, введенные в текстовое поле «Процесс B». Например, если я ввожу 1 и 2 в «Процесс A», а затем нажимаю кнопку «Установить», 3 дополнительные значения 1 и 2 будут показаны в «Процессе B».
Вот мой код:
[Процесс A]
private void Form1_Load(object sender, EventArgs e)
{
ServerChannel = new IpcServerChannel("remote");
ChannelServices.RegisterChannel(ServerChannel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject.Object), "Cnt", WellKnownObjectMode.Singleton);
ro = new RemoteObject.Object();
}
private void btnSet_Click(object sender, EventArgs e)
{
try
{
ro.SetAValue(Convert.ToInt32(this.textBox2.Text.ToString()));
ro.SetBValue(Convert.ToInt32(this.textBox3.Text.ToString()));
this.textBox1.AppendText("A : " + ro.GetAValue() + ", B : " + ro.GetBValue() + Environment.NewLine);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
[Процесс B]
private void Form1_Load(object sender, EventArgs e)
{
try
{
ClientChannel = new IpcClientChannel();
ChannelServices.RegisterChannel(ClientChannel, false);
RemotingConfiguration.RegisterWellKnownClientType(typeof(RemoteObject.Object), "ipc://remote/Cnt");
ro = new RemoteObject.Object();
//timer.Interval = 1000;
//timer.Enabled = true;
//timer.Tick += new EventHandler(timer_Tick);
}
catch (Exception ex)
{
}
}
[RemoteObject]
public class Object : MarshalByRefObject
{
private static int Number1;
private static int Number2;
public int GetAValue()
{
return (Number1);
}
public int GetBValue()
{
return (Number2);
}
public void SetAValue(int cnt)
{
Number1 = cnt;
}
public void SetBValue(int cnt)
{
Number2 = cnt;
}
public int Sum()
{
return (Number1 + Number2);
}
}