public override void Send(SendOrPostCallback d, object state) { var task = state as ResultExecutionTask; _queue.Enqueue(task); task.ExecutionCompleteWaitHandle.WaitOne(); d(state); }
public void Execute(IRunnable task) { if (this._taskQueue.Count > MaxTaskCount) { throw new Exception($"即时任务队列超过{MaxTaskCount}条"); } _taskQueue.Enqueue(task); }
public Task PostAsync(IEnumerable <Span> spans, CancellationToken cancellationToken = default(CancellationToken)) { if (_blockingQueue.IsActived && !cancellationToken.IsCancellationRequested) { _blockingQueue.Enqueue(spans); } return(TaskUtils.FailCompletedTask); }
/// <summary> /// Store event in file for transmission /// </summary> /// <param name="data"></param> private void Store(IInsightData data) { try { queue.Enqueue(data); } catch (Exception ex) { Debug.WriteLine(ex.Message); } }
public IronConsoleResult Execute(string expression, string extension, bool wait) { var task = new IronConsoleTask(Runtime, expression, extension); _queue.Enqueue(task); if (wait) { task.WaitFor(5000); } return(task.IronConsoleResult); }
public Task PostAsync(IEnumerable <Span> spans, CancellationToken cancellationToken = default(CancellationToken)) { if (spans == null) { throw new ArgumentNullException(nameof(spans)); } if (_blockingQueue.IsActived && !cancellationToken.IsCancellationRequested) { _blockingQueue.Enqueue(spans); return(TaskUtils.CompletedTask); } return(TaskUtils.FailCompletedTask); }
public static void PublishToQueue(IBlockingQueue<object> queue, int volume, int[] produced) { while (produced[0] < volume) { try { queue.Enqueue(new object()); Interlocked.Increment(ref produced[0]); } catch (Exception ex) { Assert.Fail(ex.Message); } } }
private void ReadWorker(object state) { try { var pipelineInfo = (PipelineInfo)state; for (var index = 0; index < pipelineInfo.BlockCount; index++) { _transformQueue.Enqueue(ReadBlock(index, pipelineInfo)); } _transformQueue.CompleteAdding(); } catch (Exception ex) { ProcessError(ex); } }
protected override async Task ExecuteCoreAsync(CancellationToken stoppingToken) { var random = new Random(); while (!stoppingToken.IsCancellationRequested) { // ランダムな時間待機する(ランダムに要求が発生する想定) var sec = random.Next(1, 5); WriteLine($"{nameof(ProducerService)}: Wait {sec}s"); await Task.Delay(TimeSpan.FromSeconds(sec), stoppingToken); // ランダムな値をキューに追加する var bytes = new byte[5]; random.NextBytes(bytes); WriteLine($"{nameof(ProducerService)}: Enqueue(before) {HexHelper.ToString(bytes)}"); _queue.Enqueue(bytes); WriteLine($"{nameof(ProducerService)}: Enqueue(after) {HexHelper.ToString(bytes)}"); } }
private void TransformWorker() { try { foreach (var sourceBlock in _transformQueue.GetConsumingEnumerable()) { var transformedData = MemoryStreamManager.GetStream("Transformed"); TransformStream(sourceBlock.Data, transformedData); transformedData.Position = 0; sourceBlock.Data.Dispose(); _writeQueue.Enqueue(new Block(sourceBlock.Position, transformedData)); } } catch (Exception ex) { ProcessError(ex); } }