• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# ICancelable类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# ICanvas类代码示例发布时间:2022-05-24
下一篇:
C# ICancelProgressHandler类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap