小编Chr*_*ons的帖子

使用信号量而不是while循环.这是好事还是坏事?

我有一个在它自己的线程中运行的进程,可以在不阻塞的情况下启动/停止.这将最终进入Windows服务,但我现在在控制台应用程序中设置它,直到它完全充实.

在调用Start()之后,我希望主程序线程被阻塞,直到按下Ctrl-C.我知道这会奏效:

public static void Main(string[] args)
{
    bool keepGoing = true;

    var service = new Service();

    System.Console.TreatControlCAsInput = false;

    System.Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e)
    {
        e.Cancel = true;
        service.Stop();
        keepGoing = false; // Break the while loop below
    };

    service.Start();

    while( keepGoing )
    {
        Thread.Sleep(100); // 100 is arbitrary
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,我发现标志和任意睡眠值令人烦恼.我知道while循环中的CPU成本几乎为0,但我宁愿有一个"硬"块,一旦完成Ctrl-C处理程序就会释放.我设计了下面的内容,使用信号量来阻止,直到完成匿名的Ctrl-C处理程序:

public static void Main(string[] args)
{
    var service = new Service();

    var s = new Semaphore(1, 1);

    System.Console.TreatControlCAsInput = false;

    System.Console.CancelKeyPress += delegate(object sender, ConsoleCancelEventArgs e) …
Run Code Online (Sandbox Code Playgroud)

c# multithreading semaphore

6
推荐指数
1
解决办法
1528
查看次数

使用SSL保护自托管的OWIN + Web API 2

我已经将我的OWIN自托管Web Api 2应用程序配置为以https:// ...开头,并使用netsh将自签名SSL证书附加到我的应用程序.但是,从Fiddler,我仍然通过HTTPS频道看到明文.

OWIN需要特殊处理吗?

谢谢!

ssl fiddler asp.net-web-api owin

6
推荐指数
0
解决办法
1250
查看次数

ReSharper忽略任何带下划线的方法的命名规则.新的"功能"或配置错误?

我在Visual Studio 2013中运行了ReSharper v8.2.1(Build 8.2.1000.4556).我只是注意到行为,如果我在方法的名称中加上下划线,"Inconsistent Naming"警告会完全消失.例如:

public void zzz()
{
    // The ReSharper warning appears for this one, zzz()
}

public void zz_z()
{
    // But not this one
}
Run Code Online (Sandbox Code Playgroud)

我只是将我的ReSharper设置重新设置为出厂默认值,以确保我没有其他干扰,并且相同的行为仍然存在.

我检查了"方法,属性和事件"(产生"zzz()"警告的有效设置)下的命名约定,并且名称样式设置为"UpperCamelCase",因为我一直都知道它.没有选择"下划线宽容"设置.

所以,问题是,这是一个新的"功能",我在某处错误地配置了某些东西,还是我错过了一些完全明显的东西?

resharper visual-studio-2013 resharper-8.2

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

DateTime.Add(TimeSpan)性能与DateTime.AddDays/Hours/etc*方法

有没有使用任何性能差异DateTime.Add(TimeSpan)对比DateTime.AddDays(double),DateTime.AddHours(double)等等?

.net datetime

2
推荐指数
1
解决办法
1450
查看次数