コード例 #1
0
ファイル: WebSocketWrapper.cs プロジェクト: logosha/AWS
        public async Task Start(ParseMessage parseMessage)
        {
            _source = new CancellationTokenSource();

            PeriodicTaskAction <object, CancellationToken> keepChannel = (async(object o, CancellationToken t) =>
            {
                if (_webSocketClient == null)
                {
                    _webSocketClient = new ClientWebSocket();
                    _webSocketClient.Options.KeepAliveInterval = new TimeSpan(keepAliveSocketInterval * TimeSpan.TicksPerSecond);
                    await SocketConnect(parseMessage);
                }
                else if (_webSocketClient.State != WebSocketState.Open && _webSocketClient.State != WebSocketState.Connecting)
                {
                    _webSocketClient.Dispose();
                    _webSocketClient = new ClientWebSocket();
                    _webSocketClient.Options.KeepAliveInterval = new TimeSpan(keepAliveSocketInterval * TimeSpan.TicksPerSecond);
                    await SocketConnect(parseMessage);
                }
            }
                                                                          );

            tickerchnl = new PeriodicTaskWrapper(_logger, _name);
            await tickerchnl.Start(keepChannel, new PeriodicTaskParams { period = (int)keepAliveSecs * 1000 }, _source.Token);
        }
コード例 #2
0
ファイル: PeriodicTaskWrapper.cs プロジェクト: logosha/AWS
        public async Task Start(PeriodicTaskAction <object, CancellationToken> action, PeriodicTaskParams param, CancellationToken _token)
        {
            PeriodicTaskAction <object, CancellationToken> _action = action;
            object o = null;

            if (param.delay != 0)
            {
                await Task.Delay(param.delay);
            }

            _task = Task.Run(async() =>
            {
                while (!_token.IsCancellationRequested)
                {
                    try
                    {
                        await _action(o, _token);
                    }
                    catch (Exception ex)
                    {
                        _loger.Log(LogPriority.Debug, $"Exception: {ex.Message} {ex.StackTrace}", _name);
                    }
                    finally
                    {
                        await Task.Delay(param.period, _token);
                    }
                }
            }

                             );
        }