Beispiel #1
0
        static void AppDomainUnhandledException_Handler(object sender,
                                                        UnhandledExceptionEventArgs e)
        {
            bool lockCapture = Monitor.TryEnter(HConsole.SyncRoot, 500);

            try
            {
                HConsole.Print();
                HConsole.PrintIntensive("=== {0}: ===", HProgram.IsInMainThread ?
                                        "Необработанное исключение в основном программном потоке" :
                                        "Необработанное исключение по второстепенном программном потоке");
                var exception = e.ExceptionObject as Exception;
                using (new HConsoleColorRetention(HConsole.ErrorColor))
                    if (exception != null)
                    {
                        // Вывод цепи исключений (без стека вызовов):
                        Console.WriteLine(HException.ComposeChainedMessage(exception));
                    }
                    else
                    {
                        Console.WriteLine(
                            "Объект необработанного исключения не является экземпляром " +
                            "\"System.Exception\".");
                    }
            }
            finally
            {
                if (lockCapture)
                {
                    Monitor.Exit(HConsole.SyncRoot);
                }
            }
            // Стек вызовов будет выведен на консоль автоматически (серым цветом).
        }
Beispiel #2
0
        static void PrintSyntax()
        {
            HConsole.PrintIntensive(
                "=== Синтаксис: ===");
            HConsole.PrintExpressive(
                "{0} \"<сервер>\" \"<БД>\" \"<команда>\" \"[параметр команды]\"",
                AssemblyName);

            HConsole.PrintIntensive(
                "=== Список команд (не чувствительно к регистру): ===");
            HConsole.PrintExpressive(
                "{0} {1} создание структуры БД (\"Database.EnsureCreated\")",
                UtilityCommand.CreateStructure, HConsole.LongDash);
            HConsole.PrintExpressive(
                "{0} {1} уничтожение структуры БД; параметр: [NotInTransaction]",
                UtilityCommand.DestroyStructure, HConsole.LongDash);
            HConsole.PrintExpressive(
                "{0} {1} уничтожение+создание структуры БД",
                UtilityCommand.RecreateStructure, HConsole.LongDash);
            HConsole.PrintExpressive(
                "{0} {1} зачистка содержимого таблиц; параметр: [NotInTransaction]",
                UtilityCommand.DeleteData, HConsole.LongDash);
            HConsole.PrintExpressive(
                "{0} {1} наполнение тестовыми данными; параметр: [WithCleanup]",
                UtilityCommand.FillTest, HConsole.LongDash);

            string
                sampleSvr = "(localdb)\\MSSQLLocalDB",
                sampleDB  = "TEST";

            HConsole.PrintIntensive(
                "=== Примеры команд: ===");
            HConsole.Print(
                "DBCorrector \"{1}\" \"{2}\" {0}",
                UtilityCommand.CreateStructure, sampleSvr, sampleDB);
            HConsole.Print(
                "DBCorrector \"{1}\" \"{2}\" {0}",
                UtilityCommand.DestroyStructure, sampleSvr, sampleDB);
            HConsole.Print(
                "DBCorrector \"{1}\" \"{2}\" {0}",
                UtilityCommand.RecreateStructure, sampleSvr, sampleDB);
            HConsole.Print(
                "DBCorrector \"{1}\" \"{2}\" {0} NotInTransaction",
                UtilityCommand.DeleteData, sampleSvr, sampleDB);
            HConsole.Print(
                "DBCorrector \"{1}\" \"{2}\" {0} WithCleanup",
                UtilityCommand.FillTest, sampleSvr, sampleDB);
        }
Beispiel #3
0
        /// <summary>
        /// Основной блок программы (вызывается из "Program.Main")
        /// </summary>
        /// <exception cref="HAppFailureException" />
        static void Run()
        {
            DBC.ConnectionStringAccessor = () =>
                                           $"Server={ServerName};Database={DatabaseName};Trusted_Connection=True;" +
                                           $"Application Name={AssemblyName} (Console App);;Pooling=False";
            HConsole.PrintIntensive($"=== Команда \"{Command}\": ===");
            HConsole.Print($"База данных: [{ServerName}].[{DatabaseName}]");
            try
            {
                switch (Command)
                {
                case UtilityCommand.CreateStructure:
                    CreateStructure_Command();
                    break;

                case UtilityCommand.DestroyStructure:
                    DestroyStructure_Command();
                    break;

                case UtilityCommand.RecreateStructure:
                    RecreateStructure_Command();
                    break;

                case UtilityCommand.DeleteData:
                    DeleteData_Command();
                    break;

                case UtilityCommand.FillTest:
                    FillTest_Command();
                    break;

                default:
                    throw new HDeadCodeBranchException();
                }
            }
            catch (Exception e)
            {
                if (e is HDeadCodeBranchException)
                {
                    throw;
                }
                if (e is OperationFailedException || e is HAppFailureException)
                {
                    throw new HAppFailureException(e.Message);
                }
            }
            HConsole.PrintExpressive("Выполнено.");
        }