2016-11-29 59 views
0

不确定这是否可行,但我阅读了文档,它给我的感觉是领域是围绕这种事情构建的。我试图听取在后台线程中执行的领域对象的更改。在主线程中监听PropertyChanged事件,以便在后台线程中完成更改

下面列出的代码将Post对象添加到领域,读取对象并侦听它的属性已更改的事件。当我直接更新该对象时,会引发该事件。但是当我读取另一个线程上的对象并更新它时,我期望主线程上的对象获得更新,但情况并非如此。我错过了什么吗?

var realm = Realm.GetInstance(); 
string newPostID = Guid.NewGuid().ToString(); 

realm.Write(() => { 
var newPost = realm.CreateObject<Post>(); 
    newPost.ID = newPostID; 
    newPost.Count = 0; 
}); 

var post = realm.All<Post>().Where(item => item.ID == newPostID).FirstOrDefault(); 
post.PropertyChanged += (object sender, PropertyChangedEventArgs e) => 
{ 
    // Changed 
}; 

Realm.GetInstance().Write(() => 
{ 
    var threadPost = Realm.GetInstance().All<Post>().Where(item => item.ID == newPostID).FirstOrDefault(); 

    threadPost.Count++; 
    // This will trigger the PropertyChanged event 
}); 

Task.Run(() => { 
    for (int i = 0; i < 5; i++) 
    { 
     System.Threading.Thread.Sleep(500); 

     Realm.GetInstance().Write(() => 
     { 
      var threadPost = Realm.GetInstance().All<Post>().Where(item => item.ID == newPostID).FirstOrDefault(); 

      threadPost.Count++; 
      // This will not trigger the PropertyChanged event on the main thread 
     }); 
    } 
}); 

回答

0

This was recently implemented in the .NET SDK,所以你指望它与境界Xamarin的下一个版本的代码应工作。

+0

任何想法什么时候这是计划发布? –

+0

我们通常会避免提供具体的日期,因为这些日期总是会发生变化,而倾向于使用[soon™](http://wowwiki.wikia.com/wiki/Soon)。话虽如此,我们对假期前发布新版本持乐观态度。如果您觉得自己现在无法等待并想要它,则可以始终从[源代码](https://github.com/realm/realm-dotnet/#building-realm)构建。 –

+0

我明白你的意思 我其实是在寻找上的NuGet一个测试版,不知道我可以使用源获得尚未发布的代码。会给它一个去,谢谢你的回复 –

相关问题