예제 #1
0
 internal Session StartCommunicationLoop()
 {
     Task.Run((() =>
     {
         Debug.WriteLine("Sleep Start");
         Thread.Sleep(5000);
         Debug.WriteLine("Sleep End");
         SessionDestroyed?.Invoke(this, Device);
         Dispose();
     }));
     return(this);
 }
예제 #2
0
        public void Destroy(EventArgs e)
        {
            //trigger event
            SessionDestroyed.Invoke(this, e);

            DataService dataService = services.GetRequiredService <DataService>();

            //remove from data list.
            dataService.sessions.Remove(this);
            //remove sessionAccounts from dictionary from
            foreach (SessionAccount sessionAccount in user)
            {
                dataService.sessionAccounts.Remove(sessionAccount.userAccount.userID);
            }

            UnbindEvents();
        }
예제 #3
0
        private void DestroySession(DestroySession destroySession)
        {
            logger.Info("Destroy session (Session Id: {0})", sessionId);
            // Console.WriteLine("Destroy session (Session Id: {0})", sessionId);

            // var releaseLock = new ReleaseLock(sessionId, Self, ActorRefs.Nobody);

            // SalesOrderCollectionActor.Tell(releaseLock);

            if (!Sender.IsNobody())
            {
                var sessionDestroyed = new SessionDestroyed(sessionId);

                Sender.Tell(sessionDestroyed);
            }

            Context.Stop(Self);
        }
예제 #4
0
 /// <summary>
 /// Called whenever the <see cref="Session"/> has been destroyed.
 /// </summary>
 /// <remarks>
 /// The <see cref="Session"/> can be destroyed by calling <see cref="DestroySession"/>.
 /// </remarks>
 protected virtual void OnSessionDestroyed()
 {
     SessionDestroyed?.Invoke(this, EventArgs.Empty);
 }