Esempio n. 1
0
        public IEnumerable <ITikReSentence> ExecuteListWithDuration(int durationSec)
        {
            Exception             asyncException = null;
            List <ITikReSentence> result         = new List <ITikReSentence>();

            //Async execute, responses are stored in result list
            ExecuteAsync(
                reSentence =>
            {
                if (_isRuning)
                {
                    result.Add(reSentence);
                }
            },
                error =>
            {
                asyncException = new TikCommandException(this, error);
            });

            //wait for results (in calling =UI? thread)
            for (int i = 0; i < durationSec * 10; i++) //step per 100ms
            {
                Thread.Sleep(100);
                if (asyncException != null) //ended with exception
                {
                    throw asyncException;
                }
                if (!_isRuning) //already ended (somehow)
                {
                    break;
                }
            }
            Cancel();

            //wait for real cancel
            while (_isRuning)//TODO loadingThread.Join();
            {
                Thread.Sleep(10);
            }

            return(result);
        }
Esempio n. 2
0
        public IEnumerable<ITikReSentence> ExecuteListWithDuration(int durationSec)
        {
            Exception asyncException = null;
            List<ITikReSentence> result = new List<ITikReSentence>();

            //Async execute, responses are stored in result list
            ExecuteAsync(
                reSentence =>
                {
                    if (_isRuning)
                        result.Add(reSentence);
                },
                error =>
                {
                    asyncException = new TikCommandException(this, error);
                });

            //wait for results (in calling =UI? thread)
            for (int i = 0; i < durationSec * 10; i++) //step per 100ms
            {
                Thread.Sleep(100);
                if (asyncException != null) //ended with exception
                    throw asyncException;
                if (!_isRuning) //already ended (somehow)
                    break;
            }
            Cancel();

            //wait for real cancel
            while (_isRuning)//TODO loadingThread.Join();
            {
                Thread.Sleep(10);
            }

            return result;
        }