小编Jen*_*Mig的帖子

ObservableCollection即使在.NET 4.5中也不是线程安全的?

我现在正在撞击虚拟墙几天.BindingOperations.EnableSynchronization方法似乎只在.NET 4.5中起作用.

我写了一个有时失败的测试:

        object blah = new object();

        Application app = Application.Current == null ? new Application() : Application.Current;
        SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
        ObservableCollection<ThreadSafeObservableTestObject> collection = null;
        collection = new ObservableCollection<ThreadSafeObservableTestObject>();

        BindingOperations.EnableCollectionSynchronization(collection, blah);

        CollectionTestWindow w = new CollectionTestWindow();

        Task.Factory.StartNew(() =>
        {
            Thread.Sleep(2000);
            w.TestCollection = collection;
            collection.CollectionChanged += collection_CollectionChanged;
            collection.Add(new ThreadSafeObservableTestObject() { ID = 1, Name = "Sandra Bullock" });
            collection.Add(new ThreadSafeObservableTestObject() { ID = 2, Name = "Jennifer Aniston" });
            collection.Add(new ThreadSafeObservableTestObject() { ID = 3, Name = "Jennifer Lopez" });
            collection.Add(new …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf

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

标签 统计

.net ×1

c# ×1

wpf ×1