MS Research CHESS库是否可以替代单元测试.net多线程应用程序?
在C#4中,没有beforefieldinit标志的类型的行为被改变了,所以现在类型初始化器可以在第一次使用类的任何静态字段之前调用.
我的问题是为什么C#/ .NET团队改变了这种行为?主要原因是什么?你能展示一下这个改变有意义的实际例子吗?
假设我们有以下代码:
class Program
{
static volatile bool flag1;
static volatile bool flag2;
static volatile int val;
static void Main(string[] args)
{
for (int i = 0; i < 10000 * 10000; i++)
{
if (i % 500000 == 0)
{
Console.WriteLine("{0:#,0}",i);
}
flag1 = false;
flag2 = false;
val = 0;
Parallel.Invoke(A1, A2);
if (val == 0)
throw new Exception(string.Format("{0:#,0}: {1}, {2}", i, flag1, flag2));
}
}
static void A1()
{
flag2 = true;
if (flag1)
val = 1;
} …Run Code Online (Sandbox Code Playgroud) 在 Visual Studio 扩展中记录意外异常的正确方法是什么?Visual Studio SDK 中是否有任何类,或者可能存在来自部分开发人员的一些库?