using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Threading; namespace PEP_Tool { class Tracker { static DispatcherTimer timer = new DispatcherTimer(); //public double time = 0; static string client = ""; public static double time { get; set; } private static int count = 0; public static async void Init_Track() { client = await Crypto.EncryptString(Environment.MachineName); time = await Reader.ReadTime(await Reader.ReadTimeJSON()); SaveTrack(true); timer.Interval = TimeSpan.FromSeconds(1); timer.Tick += Timer_Tick; timer.Start(); } private static void Timer_Tick(object sender, EventArgs e) { //var t = time.Item1; time += 1; count++; if(count >= 30) { SaveTrack(true); count = 0; } } public static async Task SaveTrack(bool Online) { var r = new Random(); await Task.Delay(r.Next(10, 200)); var save = await Reader.ReadTimeJSON() #if DEBUG ?? new Dictionary>(); #endif //var save = ; if (save != null) //save = new Dictionary>(); { if (save.ContainsKey(client)) save[client] = new Tuple(time, Online, Properties.Settings.Default.Version); else save.Add(client, new Tuple(time, Online, Properties.Settings.Default.Version)); if (client == "") return; try { var json = Newtonsoft.Json.JsonConvert.SerializeObject(save); //json = await Crypto.EncryptString(json); byte[] jsonB = new UTF8Encoding(true).GetBytes(json); using (var fs = await Writer.WaitForFile(@"\\bku.db.de\db\DB_006\GLW_11\ICE-Fertigung\M2\Personaleinsatzplanung\Log\Track.json", System.IO.FileMode.Open, System.IO.FileAccess.Write, System.IO.FileShare.Read))//Write | System.IO.FileShare.Delete { if (fs != null) { fs.SetLength(0); await fs.WriteAsync(jsonB, 0, jsonB.Length); } else fs.Dispose(); } } catch (Exception ex) { LogFile.WriteLine(ex); } } } } }