示例#1
0
        public void Suspend()
        {
            if (!Running)
            {
                return;
            }

            Running = false;
            Suspended?.Invoke(this);
        }
示例#2
0
 /// <summary>
 /// Приостановить работу модуля.
 /// </summary>
 public async ValueTask <Nothing> SuspendModule()
 {
     if (_suspendedAware && Interlocked.Exchange(ref _isSuspended, 1) == 0)
     {
         if (_suspendAwareCallbacks != null)
         {
             await _suspendAwareCallbacks.OnSuspendLifetimeCallback();
         }
         Suspended?.Invoke(null);
     }
     return(Nothing.Value);
 }
示例#3
0
        public async Task SuspendAsync()
        {
            this.LogInfo();

            Suspending?.Invoke(this, EventArgs.Empty);

            // save the navigation state
            await FrameLogic.SaveNavigationState(Id, _frame);

            // call the view-model's OnSuspending
            await SuspensionLogic.CallSuspendAsync(CurrentViewModel as ISuspensionAware);

            Suspended?.Invoke(this, EventArgs.Empty);
        }
示例#4
0
 /// <summary>
 /// Приостановить работу модуля.
 /// </summary>
 public async ValueTask <Nothing> SuspendModule()
 {
     if (Interlocked.Exchange(ref _isSuspended, 1) == 0)
     {
         List <ValueTask <Nothing> > tasks = new List <ValueTask <Nothing> >();
         foreach (var pt in _providers.Values)
         {
             foreach (var p in pt.Select(p => p.QueryView <IModuleLifetime>()).Where(p => p != null && p.IsSuspendAware))
             {
                 tasks.Add(p.SuspendModule());
             }
         }
         foreach (var task in tasks)
         {
             await task;
         }
         Suspended?.Invoke(null);
     }
     return(Nothing.Value);
 }
示例#5
0
 protected override void OnSuspend()
 {
     Suspended?.Invoke(this, EventArgs.Empty);
 }
示例#6
0
 public void OnConnectionSuspended(int cause) =>
 Suspended?.Invoke(cause);
示例#7
0
        public void Suspend()
        {
            Running = false;

            Suspended?.Invoke(this);
        }
示例#8
0
 public virtual void Suspend()
 {
     State = SceneState.SUSPENDED;
     Suspended?.Invoke(this, new EventArgs());
     Stopped?.Invoke(this, new EventArgs());
 }