小编Myk*_*huk的帖子

反斜杠并在命令行参数中引用

以下行为是C#.NET中的某些功能还是错误?

测试应用:

using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Arguments:");
            foreach (string arg in args)
            {
                Console.WriteLine(arg);
            }

            Console.WriteLine();
            Console.WriteLine("Command Line:");
            var clArgs = Environment.CommandLine.Split(' ');
            foreach (string arg in clArgs.Skip(clArgs.Length - args.Length))
            {
                Console.WriteLine(arg);
            }

            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用命令行参数运行它:

a "b" "\\x\\" "\x\"
Run Code Online (Sandbox Code Playgroud)

在我收到的结果中:

Arguments:
a
b
\\x\
\x"

Command Line:
a
"b"
"\\x\\"
"\x\"
Run Code Online (Sandbox Code Playgroud)

传递给方法Main()的args中缺少反斜杠和未删除的引号.除手动解析外,正确的解决方法是什么Environment.CommandLine

.net c#

20
推荐指数
2
解决办法
2万
查看次数

从不同步的代码块调用对象同步方法

我在生产中收到一个异常,并在Mutex.ReleaseMutex()中使用以下代码中的"从非同步代码块调用了对象同步方法":

Mutex Mutex
{
    get { return mutex ?? (mutex = new Mutex(false, mutexName)); }
}
[NonSerialized]
Mutex mutex;

public void Log(/*...*/)
{
    Mutex.WaitOne();
    try
    {
        /*...*/
    }
    finally
    {
        Mutex.ReleaseMutex();
    }
}
Run Code Online (Sandbox Code Playgroud)

可能有多个进程可以使用具有不同和相同mutextName的互斥锁.而且我仍然不确定那个例外是如何发生的.

.net c# synchronization

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

标签 统计

.net ×2

c# ×2

synchronization ×1