src/Coast.Core/Processor/ProcessingContext.cs
(完整代码) 1KBnamespace Coast.Core.Processor
{
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
public class ProcessingContext : IDisposable
{
private IServiceScope? _scope;
private ProcessingContext(ProcessingContext other)
{
Provider = other.Provider;
CancellationToken = other.CancellationToken;
}
public ProcessingContext(
IServiceProvider provider,
CancellationToken cancellationToken)
{
Provider = provider;
CancellationToken = cancellationToken;
}
public IServiceProvider Provider { get; private set; }
public CancellationToken CancellationToken { get; }
public bool IsStopping => CancellationToken.IsCancellationRequested;
public void Dispose()
{
_scope?.Dispose();
}
public void ThrowIfStopping()
{
CancellationToken.ThrowIfCancellationRequested();
}
public ProcessingContext CreateScope()
{
var serviceScope = Provider.CreateScope();
return new ProcessingContext(this)
{
_scope = serviceScope,
Provider = serviceScope.ServiceProvider
};
}
public Task WaitAsync(TimeSpan timeout)
{
return Task.Delay(timeout, CancellationToken);
}
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
