小编Lin*_*986的帖子

在 ASP .NET Core Web API 控制器中注入 Serilog 的 ILogger 接口

我能找到的关于在 ASP .NET Core Web 应用程序ILogger<T>中使用 Serilog 的所有示例都使用 Microsoft 的界面,而不是使用 Serilog 的ILogger界面。

我如何才能使 Serilog 的 ILogger 可以通过构造函数注入?

using Serilog;

public class HomeController : Controller
{
    ILogger logger;

    public HomeController(ILogger logger)
    {
        this.logger = logger;
    }

    public IActionResult Index()
    {
        this.logger.Information("Index was called");
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection serilog asp.net-core

7
推荐指数
2
解决办法
6408
查看次数

以编程方式锁定注册表项以避免并发问题

我正在编写一个应用程序,需要按特定顺序在密钥内写入注册表值,并且其他应用程序可能会同时写入同一密钥。

有没有办法暂时锁定注册表项以进行写入,以避免多个进程同时写入该注册表项,以及值变得混乱/无序?

例如,我需要写入HKCU\Software\Company\Product\其中已包含以下值:

  • Start1="abc"
  • Start2="def"
  • Start3="ghi"

因为最后一个是Start3,我需要创建Start4

问题是,如果另一个进程同时运行,检测到这Start3是最后一个进程,并覆盖我Start4刚刚创建的进程(因为由于并发而没有看到它)。

有什么好方法可以防止这种情况发生?

我无法控制哪些(或多少)应用程序正在写入此键,因此我无法告诉它们暂停或类似的事情......

我正在寻找类似下面的伪代码的东西:

Registry.Lock("HKCU\Software\Company\Product\");
Registry.Write("Start4", "jkl");
Registry.Unlock("HKCU\Software\Company\Product\");
Run Code Online (Sandbox Code Playgroud)

c# c++ winapi

3
推荐指数
1
解决办法
1353
查看次数

标签 统计

c# ×2

asp.net-core ×1

c++ ×1

dependency-injection ×1

serilog ×1

winapi ×1