2016-11-29 64 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一個測試版,不知道我可以使用源獲得尚未發佈的代碼。會給它一個去,謝謝你的回覆 –

相關問題