小编Bri*_*sen的帖子

何时可以调用GC.Collect?

一般建议您不应该GC.Collect从您的代码中调用,但此规则的例外情况是什么?

我只能想到一些非常具体的案例,强制垃圾收集可能是有意义的.

想到的一个例子是服务,每隔一段时间醒来,执行一些任务,然后长时间睡眠.在这种情况下,强制收集以防止即将空闲的进程保持比需要的更多内存可能是个好主意.

是否还有其他可以接听电话的情况GC.Collect

.net c# garbage-collection

160
推荐指数
11
解决办法
10万
查看次数

如何从我的应用程序中打开网页?

我想让我的WPF应用程序打开默认浏览器并转到某个网页.我怎么做?

.net c# wpf

117
推荐指数
7
解决办法
21万
查看次数

要避免的设计模式

许多人似乎都同意,Singleton模式有许多缺点,有些甚至建议完全避免这种模式.这里有一个很好的讨论.请将有关Singleton模式的任何评论指向该问题.

我的问题:是否有其他设计模式,应该避免或小心使用?

design-patterns anti-patterns

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

C#中的默认布尔值是多少?

boolean(bool)不能为null.和:

bool foo; if(foo){} // Use of unassigned local variable 'foo'
Run Code Online (Sandbox Code Playgroud)

为什么默认值不是假的?那么如果它不是null,它的值是多少?是什么原因?

编辑1 - 默认值确实为false - 但是应该初始化所有变量,为什么?这是另一个问题;)

编辑2 - 与Resharper:private bool foo = false; // Initializing field by default value is redundant???

c#

70
推荐指数
3
解决办法
10万
查看次数

HashSet是否保留了插入顺序?

HashSet.NET 3.5中引入的集合在使用迭代时是否保留了插入顺序foreach

文件指出,该集合没有排序,但它并没有说明插入顺序什么.预发布的BCL 博客条目表明它是无序的,但是本文声明它旨在保留插入顺序.我的有限测试表明,该顺序得以保留,但这可能是巧合.

.net hashset

62
推荐指数
4
解决办法
3万
查看次数

忽略备份幻灯片中的页码

我正在使用乳胶中的beamer文档类进行演示.我将有一些备份幻灯片可用于离线观看,参考等.Beamer有一项功能,可以在每张幻灯片上显示演示文稿的进度{page#}/{total pages}.我真的很喜欢它,如果{total pages}相当于我的总页数w/out计数备份幻灯片(我不想在第一页上阻止我的观众!).有谁知道如何做到这一点?

latex beamer

57
推荐指数
7
解决办法
5万
查看次数

C#:监控 - 等待,脉冲,PulseAll

我有理解困难时期 Wait(),Pulse(),PulseAll().他们都会避免僵局吗?如果您解释如何使用它们,我将不胜感激?

c# multithreading

49
推荐指数
3
解决办法
4万
查看次数

列表的默认容量

List的默认容量是多少?

.net c#

45
推荐指数
4
解决办法
3万
查看次数

在CLR 4.0中,单个对象的大小仍然限制为2 GB?

据我所知,.NET中的单个实例有2 GB的限制.我没有太多关注,因为到目前为止我主要使用32位操作系统.在32但它或多或少是一个人为的限制.但是,我很惊讶地发现这个限制也适用于64位.NET.

由于诸如List<T>使用数组来存储项目之类的集合,这意味着与在64位上运行的相同应用程序相比,在32位上运行的.NET应用程序将能够在列表中保存两倍的引用类型项.这非常令人惊讶.

有谁知道这个限制是否在CLR 4.0中得到解决(目前我手头没有安装4.0).

.net memory clr4.0

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

调用任何交叉线程代码的最佳方法?

我知道之前已经问过这个问题,但我正在寻找一种方法:

  1. 简化安全交叉线程代码的创建.
  2. 在任何情况下重用此代码(没有Windows窗体引用).

这是我到目前为止,但我想删除Windows窗体引用.有任何想法吗?

public delegate void SafeInvokeDelegate(System.Action action);
public class SafeInvoke
{
    private readonly System.Windows.Forms.Control _threadControl;

    public SafeInvoke()
    {
        _threadControl = new System.Windows.Forms.Control();
    }

    public void Invoke(System.Action action)
    {
        if (_threadControl.InvokeRequired)
            _threadControl.Invoke(new SafeInvokeDelegate(Invoke), new object[] {action});
        else if (action != null) action();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的类可能会这样使用:

SafeInvoke _safeInvoker = new SafeInvoke();
void SafeClearItems()
{
    _safeInvoker.Invoke(delegate
        {
            listView1.Items.Clear();
        });
}
Run Code Online (Sandbox Code Playgroud)

我如何删除SafeInvoke类中的System.Windows.Forms.Control但保持相同的功能?

.net c# invoke

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