本文整理汇总了C#中ICancelable类的典型用法代码示例。如果您正苦于以下问题:C# ICancelable类的具体用法?C# ICancelable怎么用?C# ICancelable使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ICancelable类属于命名空间,在下文中一共展示了ICancelable类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: PeriodicAction
IEnumerator PeriodicAction(TimeSpan period, Action action, ICancelable cancellation)
{
// zero == every frame
if (period == TimeSpan.Zero)
{
while (true)
{
yield return null; // not immediately, run next frame
if (cancellation.IsDisposed) yield break;
MainThreadDispatcher.UnsafeSend(action);
}
}
else
{
var seconds = (float)(period.TotalMilliseconds / 1000.0);
var yieldInstruction = new WaitForSeconds(seconds); // cache single instruction object
while (true)
{
yield return yieldInstruction;
if (cancellation.IsDisposed) yield break;
MainThreadDispatcher.UnsafeSend(action);
}
}
}
开发者ID:MighteeCactus,项目名称:UniRx,代码行数:27,代码来源:MainThreadScheduler.cs
示例2: InternalScheduleTellOnce
protected override void InternalScheduleTellOnce(TimeSpan delay, ICanTell receiver, object message, IActorRef sender, ICancelable cancelable)
{
var cancellationToken = cancelable == null ? CancellationToken.None : cancelable.Token;
InternalScheduleOnce(delay, () =>
{
receiver.Tell(message, sender);
}, cancellationToken);
}
开发者ID:njannink,项目名称:sonarlint-vs,代码行数:8,代码来源:DedicatedThreadScheduler.cs
示例3: DelayAction
// delay action is run in StartCoroutine
// Okay to action run synchronous and guaranteed run on MainThread
IEnumerator DelayAction(TimeSpan dueTime, Action action, ICancelable cancellation)
{
#if UNITY_EDITOR
if (!ScenePlaybackDetector.IsPlaying)
{
var startTime = DateTimeOffset.UtcNow;
while (true)
{
yield return null;
if (cancellation.IsDisposed) break;
var elapsed = DateTimeOffset.UtcNow - startTime;
if (elapsed >= dueTime)
{
MainThreadDispatcher.UnsafeSend(action);
break;
}
};
yield break;
}
#endif
if (dueTime == TimeSpan.Zero)
{
yield return null; // not immediately, run next frame
if (cancellation.IsDisposed) yield break;
MainThreadDispatcher.UnsafeSend(action);
}
else if (dueTime.TotalMilliseconds % 1000 == 0)
{
yield return new WaitForSeconds((float)dueTime.TotalSeconds);
if (cancellation.IsDisposed) yield break;
MainThreadDispatcher.UnsafeSend(action);
}
else
{
var startTime = Time.time;
var dt = (float)dueTime.TotalSeconds;
while (true)
{
yield return null;
if (cancellation.IsDisposed) break;
var elapsed = Time.time - startTime;
if (elapsed >= dt)
{
MainThreadDispatcher.UnsafeSend(action);
break;
}
}
}
}
开发者ID:the9ball,项目名称:unirx_study,代码行数:56,代码来源:MainThreadScheduler.cs
示例4: ClusterMetricsCollector
public ClusterMetricsCollector(IActorRef publisher)
{
_publisher = publisher;
_cluster = Cluster.Get(Context.System);
Collector = MetricsCollector.Get(Context.System.AsInstanceOf<ExtendedActorSystem>(), _cluster.Settings);
LatestGossip = MetricsGossip.Empty;
Nodes = ImmutableHashSet.Create<Address>();
_metricsCancelable = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
_cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.MetricsInterval),
_cluster.Settings.MetricsInterval, Self, InternalClusterAction.MetricsTick.Instance, Self);
_gossipCancelable = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
_cluster.Settings.PeriodicTasksInitialDelay.Max(_cluster.Settings.GossipInterval),
_cluster.Settings.GossipInterval, Self, InternalClusterAction.GossipTick.Instance, Self);
Receive<InternalClusterAction.GossipTick>(tick => Gossip());
Receive<InternalClusterAction.MetricsTick>(tick => Collect());
Receive<MetricsGossipEnvelope>(envelope => ReceiveGossip(envelope));
Receive<ClusterEvent.CurrentClusterState>(state => ReceiveState(state));
Receive<ClusterEvent.MemberUp>(up => AddMember(up.Member));
Receive<ClusterEvent.MemberRemoved>(removed => RemoveMember(removed.Member));
Receive<ClusterEvent.MemberExited>(exited => RemoveMember(exited.Member));
Receive<ClusterEvent.UnreachableMember>(member => RemoveMember(member.Member));
Receive<ClusterEvent.ReachableMember>(member =>
{
if (member.Member.Status == MemberStatus.Up) AddMember(member.Member);
});
Receive<ClusterEvent.IMemberEvent>(@event => { }); //not interested in other types of member event
}
开发者ID:rogeralsing,项目名称:akka.net,代码行数:30,代码来源:ClusterMetricsCollector.cs
示例5: SignalRClusterStatusActor
public SignalRClusterStatusActor()
{
ClusterStatusTeller = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(1), Self, new ClusterStatus.SendCurrentClusterState(), Self);
Ready();
}
开发者ID:Danthar,项目名称:Akka.Cluster.Monitor,代码行数:7,代码来源:SignalRClusterStatusActor.cs
示例6: PreStart
protected override void PreStart()
{
_cluster = Cluster.Get(Context.System);
_cancelStatusUpdates = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(2), Self, new SendState(), Self);
base.PreStart();
}
开发者ID:jurek333,项目名称:CoreWars,代码行数:7,代码来源:ClusterMonitor.cs
示例7: PerformanceCounterActor
public PerformanceCounterActor(string seriesName, Func<PerformanceCounter> performanceCounterGenerator)
{
_seriesName = seriesName;
_performanceCounterGenerator = performanceCounterGenerator;
_subscriptions = new HashSet<IActorRef>();
_cancelPublishing = new Cancelable(Context.System.Scheduler);
}
开发者ID:fritsduus,项目名称:Akka.net-Bootcamp,代码行数:7,代码来源:PerformanceCounterActor.cs
示例8: PerformanceCounterMonitor
/// <summary>
/// Create a new <see cref="PerformanceCounterMonitor"/> actor.
/// </summary>
/// <param name="seriesName">
/// The name of the data series that tracks the performance counter's value.
/// </param>
/// <param name="performanceCounterFactory">
/// A factory delegate that creates the <see cref="PerformanceCounter"/> to monitor.
/// </param>
public PerformanceCounterMonitor(string seriesName, Func<PerformanceCounter> performanceCounterFactory)
{
if (String.IsNullOrWhiteSpace(seriesName))
throw new ArgumentException("Argument cannot be null, empty, or entirely componsed of whitespace: 'seriesName'.", nameof(seriesName));
if (performanceCounterFactory == null)
throw new ArgumentNullException(nameof(performanceCounterFactory));
_seriesName = seriesName;
_performanceCounterFactory = performanceCounterFactory;
_cancelPublishing = new Cancelable(Context.System.Scheduler);
Receive<GatherMetrics>(_ =>
{
Metric metric = new Metric(
_seriesName,
_performanceCounter.NextValue()
);
foreach (IActorRef subscriber in _subscribers)
subscriber.Tell(metric);
});
Receive<SubscribePerformanceCounter>(request =>
{
_subscribers.Add(request.Subscriber);
});
Receive<UnsubscribePerformanceCounter>(request =>
{
_subscribers.Remove(request.Subscriber);
});
}
开发者ID:tintoy,项目名称:akkadotnet-bootcamp-unit2,代码行数:39,代码来源:PerformanceCounterMonitor.cs
示例9: TopicLike
protected TopicLike(TimeSpan emptyTimeToLive)
{
Subscribers = new HashSet<IActorRef>();
EmptyTimeToLive = emptyTimeToLive;
PruneInterval = new TimeSpan(emptyTimeToLive.Ticks / 2);
PruneCancelable = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(PruneInterval, PruneInterval, Self, Prune.Instance, Self);
}
开发者ID:yaozd,项目名称:akka.net,代码行数:7,代码来源:Topics.cs
示例10: PerformanceCounterActor
public PerformanceCounterActor(string seriesName, Func<PerformanceCounter> performanceCounterGenerator)
{
_seriesName = seriesName;
_performanceCounterGenerator = performanceCounterGenerator;
_subscriptions = new HashSet<IActorRef>();
_cancelPublishing = new Cancelable(Context.System.Scheduler);
Receive<GatherMetrics>(m =>
{
//publish latest counter value to all subscribers
var metric = new Metric(_seriesName, _counter.NextValue());
foreach (var sub in _subscriptions)
sub.Tell(metric);
});
Receive<SubscribeCounter>(sc =>
{
// add a subscription for this counter
// (it's parent's job to filter by counter types)
_subscriptions.Add(sc.Subscriber);
});
Receive<UnsubscribeCounter>(uc =>
{
// remove a subscription from this counter
_subscriptions.Remove(uc.Subscriber);
});
}
开发者ID:phhlho,项目名称:akka.net-bootcamp,代码行数:26,代码来源:PerformanceCounterActor.cs
示例11: Timeout
private void Timeout()
{
_timedOut = true;
_cancelHeartbeat?.Cancel(false);
_cancelHeartbeat = null;
Context.Parent.Tell(new ConnectionMessages.ConnectionLost());
}
开发者ID:patchandthat,项目名称:Yakka,代码行数:7,代码来源:HeartbeatActor.cs
示例12: SignalRItemStatusActor
public SignalRItemStatusActor()
{
ItemSubscriberTeller = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(2), Self, new SubscribeToWorkers(), Self);
Ready();
}
开发者ID:rogeralsing,项目名称:Akka.Cluster.Monitor,代码行数:7,代码来源:SignalRItemStatusActor.cs
示例13: receiveEngineRunCommand
private void receiveEngineRunCommand(MessageEngineRunCommand msg)
{
MessageTick pulse = new MessageTick(0);
if (msg.RunCommand == EngineRunCommand.RunMax && _runState != TickEngineRunState.RunningMax)
{
cancelPulse();
_numberOfIncompleteSS = _subscribedActorSolarSystems.Count();
_runState = TickEngineRunState.RunningMax;
startTicksTimer();
receiveTick(pulse);
}
else if (msg.RunCommand == EngineRunCommand.RunPulse && _runState != TickEngineRunState.Running)
{
_runState = TickEngineRunState.Running;
_runCancel = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(0, 5, Self, pulse, ActorRefs.Nobody);
startTicksTimer();
receiveTick(pulse);
}
else if (msg.RunCommand == EngineRunCommand.Stop && _runState != TickEngineRunState.Stopped)
{
_runState = TickEngineRunState.Stopped;
cancelPulse();
_secondTimer.Stop();
}
}
开发者ID:AshRolls,项目名称:GalaxyGen,代码行数:25,代码来源:ActorTickEngineCoordinator.cs
示例14: ClusterServiceStatusActor
public ClusterServiceStatusActor()
{
_cancel = new CancellationTokenSource();
ClusterServiceStatusTeller = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(1), Self, new GetServiceStatus(), Self);
Ready();
}
开发者ID:Danthar,项目名称:Akka.Cluster.Monitor,代码行数:8,代码来源:ClusterServiceStatusActor.cs
示例15: CancelReceiveTimeout
private void CancelReceiveTimeout()
{
if (_pendingReceiveTimeout != null)
{
_pendingReceiveTimeout.Cancel();
_pendingReceiveTimeout = null;
}
}
开发者ID:njannink,项目名称:sonarlint-vs,代码行数:8,代码来源:ActorCell.ReceiveTimeout.cs
示例16: CheckReceiveTimeout
public void CheckReceiveTimeout()
{
CancelReceiveTimeout();
if (_receiveTimeoutDuration != null && !Mailbox.HasMessages)
{
_pendingReceiveTimeout = System.Scheduler.ScheduleTellOnceCancelable(_receiveTimeoutDuration.Value, Self, ReceiveTimeout.Instance, Self);
}
}
开发者ID:njannink,项目名称:sonarlint-vs,代码行数:8,代码来源:ActorCell.ReceiveTimeout.cs
示例17: HandleSendPayment
/*
private async void HandleSendPayment(SendPaymentMessage message)
{
var sender = Sender;
var result = await _paymentGateway.Pay(message.AccountNumber, message.Amount);
sender.Tell(new PaymentSentMessage(result.AccountNumber, result.PaymentConfirmationReceipt));
}
private void HandleSendPayment(SendPaymentMessage message)
{
var result = _paymentGateway.Pay(message.AccountNumber, message.Amount).Result;
Sender.Tell(new PaymentSentMessage(result.AccountNumber, result.PaymentConfirmationReceipt));
}
*/
protected override void PreStart()
{
_unstashSchedule = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(1),
Self,
new ProcessStashedPaymentsMessage(),
Self);
}
开发者ID:afedyanin,项目名称:akka-net-bootcamp,代码行数:27,代码来源:PaymentWorkerActor.cs
示例18: PreStart
protected override void PreStart()
{
_cancelOutput = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
TimeSpan.FromMilliseconds(800),
TimeSpan.FromMilliseconds(200),
Self,
new WriteClientList(),
Self);
}
开发者ID:patchandthat,项目名称:Yakka,代码行数:9,代码来源:ClientsActor.cs
示例19: HandleHeartBeat
private void HandleHeartBeat()
{
_lastHeard = Context.System.Scheduler.Now;
Context.System.ActorSelection(Addresses.ConsoleWriter.Path).Tell(new MachineStatus(_machineName, true, _lastHeard, null));
if (_cancelable != null)
_cancelable.Cancel();
_cancelable = Context.System.Scheduler.ScheduleTellOnceCancelable(TimeSpan.FromSeconds(2), Self, new Flatlined(), Self);
}
开发者ID:xwipeoutx,项目名称:akka-node-status,代码行数:10,代码来源:MachineActor.cs
示例20: BecomeWorking
private void BecomeWorking(RepoKey repo)
{
_receivedInitialUsers = false;
_currentRepo = repo;
_subscribers = new HashSet<IActorRef>();
_similarRepos = new Dictionary<string, SimilarRepo>();
_publishTimer = new Cancelable(Context.System.Scheduler);
_githubProgressStats = new GithubProgressStats();
Become(Working);
}
开发者ID:patchandthat,项目名称:AkkaBootcamp,代码行数:10,代码来源:GithubCoordinatorActor.cs
注:本文中的ICancelable类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论