===================
//程序1和程序2的共有类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Remote
{
public class CommunicationInfo : MarshalByRef
{
public CommunicationInfo()
{
}
public override InitializeLifetimeService()
{
//////return .InitializeLifetimeService();
System.Runtime.Remoting.Lifetime.ILease aLease
= (System.Runtime.Remoting.Lifetime.ILease) .InitializeLifetimeService();
if (aLease.CurrentState == System.Runtime.Remoting.Lifetime.LeaseState.Initial)
{
// 不过期
aLease.InitialLeaseTime = TimeSpan.Zero;
}
return aLease;
}
public class CommunicationEventArg : EventArgs
{
}
public delegate void JobAddEventHandler(CommunicationEventArg e);
public event JobAddEventHandler OnJobAdd;
public void CallJobAddEvent()
{
OnJobAdd(new CommunicationEventArg());
}
}
}
================================================
程序1(服务器端)启动时运行
参照中追加System.Runtime.Remoting
Remote .CommunicationInfo _communicationInfo;
System.Runtime.Remoting.Channels.Tcp.TcpServerChannel servChannel = new System.Runtime.Remoting.Channels.Tcp.TcpServerChannel(18089);
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(servChannel, true);
_communicationInfo = new Remote .CommunicationInfo();
_communicationInfo.OnJobAdd += new Remote .CommunicationInfo.JobAddEventHandler(_communicationInfo_OnJobAdd);
System.Runtime.Remoting.RemotingServices.Marshal(_communicationInfo, "message1",typeof(Remote .CommunicationInfo));
//测试事件
privatevoid _communicationInfo_OnJobAdd(Remote .CommunicationInfo.CommunicationEventArg e)
{
MessageBox.Show("TEST OK");
}================================================
程序2(客户端)调用方法时运行
参照中追加System.Runtime.Remoting
System.Runtime.Remoting.Channels.Tcp.TcpClientChannel _clientChannel;
_clientChannel = new System.Runtime.Remoting.Channels.Tcp.TcpClientChannel();
System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(_clientChannel, true);
Remote .CommunicationInfo _communicationInfo;
_communicationInfo = (Remote .CommunicationInfo)
System.Activator.Get (typeof(Remote .CommunicationInfo),"tcp://localhost:18089/message1", System.Runtime.Remoting.WellKnown Mode.Singleton);
_communicationInfo.CallJobAddEvent();//启动事件继续阅读与本文标签相同的文章
PDB文件:每个开发人员都必须知道的
C#之MemberwiseClone与Clone
-
基于角色管理的系统访问控制
2026-06-02栏目: 教程
-
用例之间的关系
2026-06-02栏目: 教程
-
软件需求分析步骤方法
2026-06-02栏目: 教程
-
Quartz中扩展MethodInvokingJobDetailFactoryBean实现对任务调度的拦截
2026-06-02栏目: 教程
-
hibernate 延迟加载
2026-06-02栏目: 教程
