using System; using System.IO; using System.Collections.Generic; using System.Linq; using ClosedXML.Excel; using ClosedXML.Excel.Drawings; using AsbCloudApp.Data; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; using AsbCloudInfrastructure.Services.Cache; using AsbCloudInfrastructure.Services; using System.Threading.Tasks; using System.Threading; namespace ConsoleApp1 { //var options = new DbContextOptionsBuilder() // .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True") // .Options; //var context = new AsbCloudDbContext(options); class Program { static object lockObject = new(); static int inc = 0; static void RefreshMonitor() { if (Monitor.TryEnter(lockObject)) { Task.Delay(2_000); Interlocked.Increment(ref inc); } else Monitor.Wait(lockObject); } //static Mutex mutex = new Mutex(); //static void RefreshMutex() //{ // if(Mutex.TryOpenExisting() // { // } // Interlocked.Increment(ref inc); //} static bool isUnLocked = true; static void RefreshBool() { if(isUnLocked) { isUnLocked = false; Console.WriteLine("."); Task.Delay(50).Wait(); inc++; isUnLocked = true; } while(!isUnLocked) Task.Delay(10).Wait(); } static readonly SemaphoreSlim semaphore = new(1); static void Refresh() { var wasFree = semaphore.CurrentCount > 0; semaphore.Wait(); if (wasFree) { Console.WriteLine("."); Task.Delay(500).Wait(); inc++; } semaphore.Release(); } static async Task RefreshAsync() { var wasFree = semaphore.CurrentCount == 1; await semaphore.WaitAsync(); if (wasFree) { Console.WriteLine("."); await Task.Delay(500); inc++; }else Console.Write(","); semaphore.Release(); } static void Main(/*string[] args*/) { Console.WriteLine(DateTime.Now.ToString("mm:ss.fff")); //semaphore.Release(); Refresh(); for (int i= 0; i < 4; i++) { var ts = new List(100); for (int j = 0; j < 20; j++) { ts.Add( Task.Run( RefreshAsync)); } Task.WaitAll(ts.ToArray()); Console.WriteLine("*"); } Console.WriteLine("_"); Console.ReadKey(); Console.WriteLine(inc); return; var options = new DbContextOptionsBuilder() .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True") .Options; using var db = new AsbCloudDbContext(options); var cacheDb = new CacheDb(); var telemetryService = new TelemetryService(db, cacheDb); var analyticsService = new TelemetryAnalyticsService(db, telemetryService, cacheDb); var sw = new System.Diagnostics.Stopwatch(); sw.Start(); analyticsService.AnalyzeAndSaveTelemetriesAsync().Wait(); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); return; var ts = new TelemetryService(db, new CacheDb()); var groups = ts.GetRedundentRemoteUids(); foreach(var g in groups) ts.Merge(g.Ids); Console.WriteLine("Done. Press any key to quit."); Console.ReadKey(); } } }