Эх сурвалжийг харах

調整 Heartbeat 更新寫入資料庫方法 (效能優化)

Jessica Tseng 2 жил өмнө
parent
commit
9a46efb7c8

+ 1 - 1
EVCB_OCPP.WSServer/Properties/AssemblyInfo.cs

@@ -35,4 +35,4 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyVersion("1.2.1.0")]
 [assembly: AssemblyFileVersion("1.2.1.0")]
 
-[assembly: AssemblyInformationalVersion("43243b0")]
+[assembly: AssemblyInformationalVersion("9bfa630")]

+ 24 - 13
EVCB_OCPP.WSServer/ProtalServer.cs

@@ -1327,9 +1327,9 @@ namespace EVCB_OCPP.WSServer
 
                 try
                 {
-                    if (DateTime.UtcNow.Subtract(lastcheckdt).TotalSeconds > 30)
+                    //  if (DateTime.UtcNow.Subtract(lastcheckdt).TotalSeconds > 30)
                     {
-                        lastcheckdt = DateTime.UtcNow;
+                        // lastcheckdt = DateTime.UtcNow;
                         Stopwatch watch = new Stopwatch();
                         Dictionary<string, ClientData> _copyClientDic = null;
                         lock (_lockClientDic)
@@ -1345,19 +1345,30 @@ namespace EVCB_OCPP.WSServer
                         {
                             using (var db = new MainDBContext())
                             {
-                                var machine = new Machine() { Id = session.MachineId };
-                                if (machine != null)
+                                using (var transaction = db.Database.BeginTransaction())
                                 {
-                                    db.Configuration.AutoDetectChangesEnabled = false;
-                                    db.Configuration.ValidateOnSaveEnabled = false;
-                                    db.Machine.Attach(machine);
-                                    machine.HeartbeatUpdatedOn = DateTime.UtcNow;
-                                    machine.ConnectionType = session.UriScheme.Equals("wss") ? 2 : 1;
-                                    db.Entry(machine).Property(x => x.HeartbeatUpdatedOn).IsModified = true;
-                                    db.Entry(machine).Property(x => x.ConnectionType).IsModified = true;
-                                    await db.SaveChangesAsync();
+                                    try
+                                    {
+                                        var machine = new Machine() { Id = session.MachineId };
+                                        if (machine != null)
+                                        {
+                                            db.Configuration.AutoDetectChangesEnabled = false;
+                                            db.Configuration.ValidateOnSaveEnabled = false;
+                                            db.Machine.Attach(machine);
+                                            machine.HeartbeatUpdatedOn = DateTime.UtcNow;
+                                            machine.ConnectionType = session.UriScheme.Equals("wss") ? 2 : 1;
+                                            db.Entry(machine).Property(x => x.HeartbeatUpdatedOn).IsModified = true;
+                                            db.Entry(machine).Property(x => x.ConnectionType).IsModified = true;
+                                            //await db.SaveChangesAsync();
+                                            db.SaveChanges();
+                                            transaction.Commit();
+                                        }
+                                    }
+                                    catch (Exception ex)
+                                    {
+                                        transaction.Rollback();
+                                    }
                                 }
-
                             }
                         }
                         watch.Stop();

BIN
SuperWebSocket/bin/Debug/SuperWebSocket.dll


BIN
SuperWebSocket/bin/Debug/SuperWebSocket.pdb