Exemplo n.º 1
0
        public async Task Manage_OneTrans_BeginInvoke()
        {
            await GeneratePerfRangesForRealm(async (cache, size) =>
            {
                var toWrite = PerfHelper.GenerateRandomDatabaseContents(size);

                var st = new Stopwatch();
                st.Start();

                await Task.Run(() =>
                {
                    using (var realmThread = new RealmThread(cache.Config))
                    {
                        realmThread.BeginTransaction();
                        realmThread.BeginInvoke((threadSafeRealm) =>
                        {
                            foreach (var kvp in toWrite)
                            {
                                var obj   = new KeyValueRecord();
                                obj.Key   = kvp.Key;
                                obj.Value = kvp.Value;
                                threadSafeRealm.Add(obj);
                            }
                        });
                        realmThread.CommitTransaction();
                    }
                });

                st.Stop();
                return(st.ElapsedMilliseconds);
            });
        }
Exemplo n.º 2
0
        public void ThreadInvoke_Transaction_Begin_Commit()
        {
            string path;

            using (Utility.WithEmptyDirectory(out path))
                using (var fixture = CreateRealmsInstance(path))
                    using (var t = new RealmThread(fixture.Config))
                    {
                        t.BeginTransaction();
                        t.Invoke(r =>
                        {
                            var obj = r.CreateObject <KeyValueRecord>();
                            obj.Key = "key";
                        });
                        fixture.Refresh();
                        Assert.Null(fixture.ObjectForPrimaryKey <KeyValueRecord>("key"));        // Should not be available yet
                        t.CommitTransaction();
                        fixture.Refresh();
                        Assert.NotNull(fixture.ObjectForPrimaryKey <KeyValueRecord>("key"));        // Should now be available
                    }
        }