本文整理汇总了C#中System.Runtime.Remoting.RemotingServices.GetLifetimeService方法的典型用法代码示例。如果您正苦于以下问题:C# RemotingServices.GetLifetimeService方法的具体用法?C# RemotingServices.GetLifetimeService怎么用?C# RemotingServices.GetLifetimeService使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。
在下文中一共展示了RemotingServices.GetLifetimeService方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
//引入命名空间
using System;
using System.Collections;
using System.Net.Sockets;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Messaging;
using System.Runtime.Remoting.Lifetime;
using System.Security.Permissions;
using TimerSample;
namespace GroupCoffeeTimer {
public class TimerClient : MarshalByRefObject, ISponsor {
public static void Main() {
TimerClient myClient = new TimerClient();
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public TimerClient() {
// Registers the HTTP Channel so that this client can receive
// events from the remote service.
BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = 0;
HttpChannel channel = new HttpChannel(props, clientProv, serverProv);
ChannelServices.RegisterChannel(channel);
WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(typeof(TimerService), "http://localhost:9000/MyService/TimerService.soap");
RemotingConfiguration.RegisterWellKnownClientType(remoteType);
TimerService groupTimer = new TimerService();
groupTimer.MinutesToTime = 4.0;
// Registers this client as a lease sponsor so that it can
// prevent the expiration of the TimerService.
ILease leaseObject = (ILease)RemotingServices.GetLifetimeService(groupTimer);
leaseObject.Register(this);
// Subscribes to the event so that the client can receive notifications from the server.
groupTimer.TimerExpired += new TimerExpiredEventHandler(OnTimerExpired);
Console.WriteLine("Connected to TimerExpired event");
groupTimer.Start();
Console.WriteLine("Timer started for {0} minutes.", groupTimer.MinutesToTime);
Console.WriteLine("Press enter to end the client process.");
Console.ReadLine();
}
private void OnTimerExpired (object source, TimerServiceEventArgs e) {
Console.WriteLine("TimerHelper.OnTimerExpired: {0}", e.Message);
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public TimeSpan Renewal(ILease lease) {
Console.WriteLine("TimerClient: Renewal called.");
return TimeSpan.FromMinutes(0.5);
}
}
}
示例2: Main
//引入命名空间
using System;
using System.Collections;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Lifetime;
using System.Timers;
namespace TimerSample {
public class TimerServer {
public static void Main() {
BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider();
IDictionary props = new Hashtable();
props["port"] = 9000;
HttpChannel channel = new HttpChannel(props, clientProv, serverProv);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(TimerService),
"MyService/TimerService.soap",
WellKnownObjectMode.Singleton);
Console.WriteLine("Press enter to end the server process.");
Console.ReadLine();
}
}
}
示例3: TimerServiceEventArgs
//引入命名空间
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using System.Runtime.Remoting.Channels.Http;
using System.Runtime.Remoting.Lifetime;
using System.Security.Permissions;
using System.Timers;
namespace TimerSample {
// Define the event arguments
[Serializable]
public class TimerServiceEventArgs : EventArgs {
private string m_Message;
public TimerServiceEventArgs(string message) {
m_Message = message;
}
public string Message {
get {
return m_Message;
}
}
}
// Define the delegate for the event
public delegate void TimerExpiredEventHandler (object sender, TimerServiceEventArgs e);
// Define the remote service class
public class TimerService : MarshalByRefObject {
private double m_MinutesToTime;
private Timer m_Timer;
// The client will subscribe and unsubscribe to this event
public event TimerExpiredEventHandler TimerExpired;
// Default: Initialize the TimerService to 4 minutes, the time required
// to brew coffee in a French Press.
public TimerService():this(4.0) {
}
public TimerService(double minutes) {
Console.WriteLine("TimerService instantiated.");
m_MinutesToTime = minutes;
m_Timer = new Timer();
m_Timer.Elapsed += new ElapsedEventHandler(OnElapsed);
}
public double MinutesToTime {
get {
return m_MinutesToTime;
}
set {
m_MinutesToTime = value;
}
}
public void Start() {
if(!m_Timer.Enabled) {
TimeSpan interval = TimeSpan.FromMinutes(m_MinutesToTime);
m_Timer.Interval = interval.TotalMilliseconds;
m_Timer.Enabled = true;
}
else {
// TODO: Raise an exception
}
}
private void OnElapsed(object source, ElapsedEventArgs e) {
m_Timer.Enabled = false;
// Fire Event
if (TimerExpired != null) {
// Package String in TimerServiceEventArgs
TimerServiceEventArgs timerEventArgs = new TimerServiceEventArgs("TimerServiceEventArgs: Timer Expired.");
Console.WriteLine("Firing TimerExpired Event");
TimerExpired(this, timerEventArgs);
}
}
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public override Object InitializeLifetimeService() {
ILease lease = (ILease)base.InitializeLifetimeService();
if (lease.CurrentState == LeaseState.Initial) {
lease.InitialLeaseTime = TimeSpan.FromMinutes(0.125);
lease.SponsorshipTimeout = TimeSpan.FromMinutes(2);
lease.RenewOnCallTime = TimeSpan.FromSeconds(2);
Console.WriteLine("TimerService: InitializeLifetimeService");
}
return lease;
}
}
}