static void Main(string[] args) { Console.WriteLine($"Starting {ProductNameString}"); AppDomain.CurrentDomain.ProcessExit += new EventHandler(HandleExternalExit); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HandleUnhandledException); //portable mode handling CheckPortableMode(args); SetupFolders(); LoadUserConfig(); //port override arg handling CheckPortOverride(args); MediaDB mediaDatabase = new MediaDB(); APIController apiController = new APIController(new APISurface(mediaDatabase)); RESTServer restServer = new RESTServer(apiController); IsRunning = true; //argument commands handling if (args.Contains("-rebuild")) { mediaDatabase.StartRebuild(); } if (args.Contains("-flushcache")) { MediaTranscoder.FlushCache(); } while (IsRunning) { Thread.Sleep(10); //TODO poll components? } Console.WriteLine("Ending XSMP"); restServer.Dispose(); mediaDatabase.Dispose(); }