示例#1
0
        public static void Main(string[] args)
        {
            var config  = new NLog.Config.LoggingConfiguration();
            var logfile = new NLog.Targets.FileTarget("logfile")
            {
                FileName = "Server.log", DeleteOldFileOnStartup = true
            };
            var logconsole = new NLog.Targets.ConsoleTarget("logconsole");

            config.AddRule(LogLevel.Debug, LogLevel.Fatal, logconsole);
            config.AddRule(LogLevel.Debug, LogLevel.Fatal, logfile);
            NLog.LogManager.Configuration = config;

            Logger.Info("Server");
            try
            {
                if (!readArgs(args))
                {
                    throw new Exception("Error in args!");
                }

                var clientCommunication = WaitForClients();

                var taskRunner = new TaskRunner(clientCommunication, _args);

                var type      = _args.LoadedAssembly.GetType($"{_args.LoadedAssembly.GetName().Name}.Algorithm");
                var obj       = Activator.CreateInstance(type);
                var algorithm = (IStartAlgorithm)obj;
                taskRunner.LoadAssembly($"{_args.LoadedAssembly.GetName().Name}.dll");

                algorithm.Run(taskRunner);

                taskRunner.Finish();
                clientCommunication.Quit();
            }
            catch (Exception e)
            {
                Logger.Error(e);
            }

            Logger.Info("Exitting...");
            Console.ReadLine();
        }