首页 > 解决方案 > 如果返回 main

问题描述

我有构造函数注入,它解决了存储库依赖项。

存储库注册如下:

var container = new UnityContainer();
container.RegisterType<DbContext, ManagementContext>(new PerResolveLifetimeManager(), new InjectionConstructor());
container.RegisterType<IGenericRepository, GenericRepository>();

代码

问题服务

private readonly IGenericRepository _repository;

public IssueService(IGenericRepository repository)
{
    _repository = repository;
}

public IssueRequest CreateAndProcess(IssueRequest issueRequest)
{
    ...
    
    Task task = Task.Run(() => ProcessQIssueRequest(number));
    task.ConfigureAwait(false);

    return number;
}

private void ProcessQIssueRequest(int number)
{
    try
    {
       ...

    }
    catch (Exception ex)
    {
        _repository.InsertOrUpdate(entity);
        _repository.SaveChanges();
    }
}

WCF 服务

public class CrManagementService : ICrManagementService
{
    private readonly IMapper _mapper;

    public CrManagementService(IMapper mapper)
    {
        _mapper = mapper;
    }

    public string CreateAndProcessIssueRequest(IssueRequest contract)
    {
         try
         {
              IIssueService issueService = ContainerManager.Container.Resolve<IIssueService>();
              issueRequest = issueService.CreateAndProcess(contract);
         }
         catch (Exception ex)
         {
              ThrowHelper.ReThrow(ex, string.Format("{0}={1}", nameof(issueRequest.Entity.CrName), issueRequest.Entity.CrName));
         }
         return issueRequest.CrNumber;
    }
}

我的问题是:resolved_repository将一直可用ProcessQIssueRequest到最后,还是在CreateAndProcessIssueRequest方法返回后立即销毁?

标签: c#multithreadingwcfunity-container

解决方案


推荐阅读