小编sa.*_*.he的帖子

垃圾收集是在进程级别还是应用程序级别进行的?

FullGC在运行时正常暂停所有线程.有两个AppDomain,每个都运行多个线程.当GC运行时,是否会暂停所有线程,还是只有一个AppDomain?

.net garbage-collection

23
推荐指数
2
解决办法
3004
查看次数

何处下载适用于.NET 4.5的Microsoft Expression Blend软件开发工具包(SDK)

路径

C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
Run Code Online (Sandbox Code Playgroud)

包含我们的任何开发人员计算机上可用的几个库(Win7,VS 2012 Premium).

创建引用任何这些文件的项目适用于开发人员计算机,但会导致构建服务器出现问题.

我想避免在我们的CVS系统或那些nuget-wrapper-packages中移动这个文件的解决方法.

因此,我在哪里可以下载MS Blend 4.5 SDK.(找到Framework 4.0的链接,但不是Framework 4.5的链接)

.net visual-studio-2012

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

EnableCollectionSynchronization 如何工作?

有几篇文章解释了 BindingOperations.EnableCollectionSynchronization 的用法。例如WPF 中的 BindingOperations.EnableCollectionSynchronization 之谜使用 BindingOperations.EnableCollectionSynchronization

但是,我对“锁”的理解与以下演示的行为不符。

private void Button_Click(object sender, RoutedEventArgs e)
{
    var itemsLock = new object();
    var items = new ObservableCollection<string>();
    BindingOperations.EnableCollectionSynchronization(items, itemsLock);

    Task.Run(() =>
    {
        lock (itemsLock)
        {
            Debug.WriteLine("task inside lock");
            Thread.Sleep(5000);
            items.Where(m => m == "foo").ToArray();
        }
        Debug.WriteLine("task outside lock");
    });

    Thread.Sleep(1000);
    Debug.WriteLine("UI thread add..");
    items.Add("foo");
    Debug.WriteLine("UI thread add..done");
}
Run Code Online (Sandbox Code Playgroud)

由于锁定,我预计调试输出如下:

task inside lock
UI thread add..
task outside lock
UI thread add..done
Run Code Online (Sandbox Code Playgroud)

但我发现这样的调试输出:

task inside lock
UI thread add..
UI …
Run Code Online (Sandbox Code Playgroud)

c# wpf observablecollection

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