public override async void DidInvalidate(NFCNdefReaderSession session, NSError error) { System.Diagnostics.Debug.WriteLine($"========> DidInvalidate {error}"); await DisableSessionAsync(); if ((NFCReaderError)(long)error.Code == NFCReaderError.ReaderSessionInvalidationErrorSessionTimeout) { SessionTimeout?.Invoke(this, EventArgs.Empty); } }
protected void OnSessionTimeout(object ticks) { _watchdogTimer?.Change(-1, -1); lock (this) { var startTicks = ticks; TimeSpan elapsedTime = (startTicks != null) ? TimeSpan.FromTicks(DateTime.Now.Ticks - (long)startTicks) : TimeSpan.Zero; SessionTimeout?.Invoke(this, new SessionTimeoutEventArgs(elapsedTime)); if (Phase != SessionPhase.Terminate) { //OnSessionClosed("Sesión cerrada para restablecer sesión automáticamente."); OnSessionStarted(); BeginHandshake(); } else if (IsPortReady) { ClosePort(); OnSessionClosed($"No se puedo enviar la petición de cierre de sesión a causa de Timeout. Tiempo sin comunicación {elapsedTime.TotalSeconds} segundos"); } } }
protected virtual void OnSessionTimeout(EventArgs e) { SessionTimeout?.Invoke(this, e); }