/// <summary>
        /// Tries to login.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="password">The password</param>
        /// <returns>True if the login is successful. Otherwise false.</returns>
        public async Task <bool> LoginAsync(string username, string password)
        {
            DisposeGuard();

            if (!TryBeginInvoke())
            {
                return(false);
            }

            LoginResult result;

            try
            {
                result = await _client.LoginAsync(username, password);
            }
            catch (Exception e)
            {
                await PollAsync();

                TryEndInvoke();
                OnBackgroundError(ServiceConnectionEventArgs.Error(e));
                return(false);
            }

            SetSessionData(result);
            await PollAsync();

            TryEndInvoke();

            return(result != null);
        }
        public async Task <bool> Login()
        {
            if (!IsLoggedIn)
            {
                LoginInformation = await _client.LoginAsync(_username, _password);
            }

            return(IsLoggedIn);
        }