public async Task <LightDocument> Process(ParseRequest request) { if (splitter == null) { log.LogInformation("Constructing NEW {0} splitter...", id); Interlocked.Exchange(ref current, 0); splitter = factory(); } LightDocument result = await splitter.Process(request).ConfigureAwait(false); if (Interlocked.Increment(ref current) >= maxProcessing) { splitter.Dispose(); splitter = null; } return(result); }
public void Dispose() { splitter?.Dispose(); }