2016-11-29 16 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)の使用を希望しているため、特定の日付を指定しないでください。それは、休暇の前に新しいバージョンを出荷することについて楽観的だと言われています。あなたが今待つことができないと思っている場合は、いつでも[source](https://github.com/realm/realm-dotnet/#building-realm)からビルドすることができます。 –

+0

私はあなたが意味することを理解しています 私は実際にはまだリリースされていないコードを取得するためにソースを使用できるかどうかを知っていたナゲットのベータチャネルを探していた。 –

関連する問題