示例#1
0
        /// <summary>
        /// Deactivates the asynchronous.
        /// </summary>
        /// <param name="link">The link.</param>
        /// <param name="act">The act.</param>
        public void DeactivateAsync(ILink link, Action <ILink> act = null)
        {
            ILink res = null;

            using (var wrk = new BackgroundWorker())
            {
                wrk.DoWork += (sender, args) =>
                {
                    try
                    {
                        res = Deactivate(link);
                    }
                    catch (Exception ex)
                    {
                        wrk.Dispose();
                        Logger.Error(ex.GetCombinedMessages());
                    }
                };
                wrk.RunWorkerCompleted += (s, e) =>
                {
                    wrk.Dispose();
                    if (act != null)
                    {
                        act(res);
                    }
                };
                wrk.RunWorkerAsync();
            }
        }
示例#2
0
        /// <summary>
        /// Gets the sources asycn.
        /// </summary>
        /// <param name="link">The link.</param>
        /// <param name="activeOnly">if set to <c>true</c> [active only].</param>
        /// <param name="act">The act.</param>
        public void GetSourcesAsync(ILink link, bool activeOnly = true, Action <IEnumerable <ILink> > act = null)
        {
            IEnumerable <ILink> res = null;

            using (var wrk = new BackgroundWorker())
            {
                wrk.DoWork += (sender, args) =>
                {
                    try
                    {
                        res = GetTargets(link, activeOnly);
                    }
                    catch (Exception ex)
                    {
                        wrk.Dispose();
                        Logger.Error(ex.GetCombinedMessages());
                    }
                };
                wrk.RunWorkerCompleted += (s, e) =>
                {
                    wrk.Dispose();
                    if (act != null)
                    {
                        act(res);
                    }
                };
                wrk.RunWorkerAsync();
            }
        }
示例#3
0
        /// <summary>
        /// Deactivates the specified link.
        /// </summary>
        /// <param name="link">The link.</param>
        /// <returns>ILink.</returns>
        public ILink Deactivate(ILink link)
        {
            var clt = CreateClient();

            try
            {
                return(clt.Deactivate(link.Zip()).Unzip <Link>());
            }
            catch (Exception ex)
            {
                Logger.Error(ex.GetCombinedMessages());
                link.AddError(ex.GetCombinedMessages());
                return(link);
            }
            finally
            {
                CloseClient(clt);
            }
        }
示例#4
0
        /// <summary>
        /// Gets the sources.
        /// </summary>
        /// <param name="link">The link.</param>
        /// <param name="activeOnly">if set to <c>true</c> [active only].</param>
        /// <returns>IEnumerable&lt;ILink&gt;.</returns>
        public IEnumerable <ILink> GetSources(ILink link, bool activeOnly = true)
        {
            var clt = CreateClient();

            try
            {
                return(clt
                       .GetSources(link.Zip(), activeOnly)
                       .Unzip <Link>());
            }
            catch (Exception ex)
            {
                Logger.Error(ex.GetCombinedMessages());
                link.AddError(ex.GetCombinedMessages());
                return(new[] { link });
            }
            finally
            {
                CloseClient(clt);
            }
        }