SQLite什么都好,就怕“database is locked”这些年来想尽办法去规避它。
测试代码:
static void Test2() { XCode.Setting.Current.TransactionDebug = true; XTrace.WriteLine(Role.Meta.Count + ""); XTrace.WriteLine(Log.Meta.Count + ""); Console.Clear(); Task.Run(() => TestTask(1)); Thread.Sleep(1000); Task.Run(() => TestTask(2)); } static void TestTask(Int32 tid) { try { XTrace.WriteLine("TestTask {0} Start", tid); using (var tran = Role.Meta.CreateTrans()) { var role = new Role(); role.Name = "R" + DateTime.Now.Millisecond; role.Save(); XTrace.WriteLine("role.ID={0}", role.ID); Thread.Sleep(3000); role = new Role(); role.Name = "R" + DateTime.Now.Millisecond; role.Save(); XTrace.WriteLine("role.ID={0}", role.ID); Thread.Sleep(3000); if (tid == 2) tran.Commit(); } } catch (Exception ex) { XTrace.WriteException(ex); } finally { XTrace.WriteLine("TestTask {0} End", tid); } }