小编Vok*_*erg的帖子

Lock语句与Monitor.Enter方法

我想这是一个有趣的代码示例.

我们有一个类 - 让我们称之为Test - 使用Finalize方法.在Main方法中有两个代码块,我使用lock语句和Monitor.Enter()调用.另外,我在这里有两个Test类的实例.实验非常简单:将Lock变量置于锁定块内,然后尝试使用GC.Collect方法调用手动收集它.因此,要查看Finalize调用,我将调用GC.WaitForPendingFinalizers方法.正如你所看到的,一切都很简单.

通过lock语句的定义,编译器将其打开到try {...} finally {..}块,并在try块和Monitor内部调用Monitor.Enter.然后它在finally块中退出.我试图手动实现try-finally块.

在两种情况下我都期望相同的行为 - 使用锁和使用Monitor.Enter.但是,令人惊讶的是,它有所不同,如下所示:

public class Test
{
    private string name;

    public Test(string name)
    {
        this.name = name;
    }

    ~Test()
    {
        Console.WriteLine(string.Format("Finalizing class name {0}.", name));
    }
}

class Program
{
    static void Main(string[] args)
    {
        var test1 = …
Run Code Online (Sandbox Code Playgroud)

c# garbage-collection command-line-interface

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

Scrum backlog excel模板

我想和我的团队一起尝试scrum.在这里研究了很多关于scrum工具的帖子,但我认为这些都是多余的,excel文件适用于产品和sprint积压.但这是一个很好的模板的问题.也许有人可以分享他用于scrum积压的excel模板?谢谢.

scrum

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

物体复活的用法

我的.NET Windows服务应用程序中存在内存泄漏问题.所以我开始阅读有关.NET内存管理的文章.我在Jeffrey Richter的一篇文章中找到了一个有趣的练习.这个练习名称是"对象复活".它看起来像是将全局或静态变量初始化为"this"的位置代码:

protected override void Finalize() {
     Application.ObjHolder = this;
     GC.ReRegisterForFinalize(this);
}
Run Code Online (Sandbox Code Playgroud)

我知道这是一个不好的做法,但我想知道使用这种做法的模式.如果你知道,请写在这里.

c# clr memory-management

14
推荐指数
3
解决办法
4095
查看次数

使用数据库的主键作为业务对象标识符是一个坏主意吗?

我想知道,使用自动增量主键作为业务实体标识符是不好或好主意,如Partner IdAccount Number

另外,如果我选择这种方法,我会面临哪些陷阱?

sql business-logic object-relational-model

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