Мне нужно, чтобы в моем приложении открывалась консоль (оно не консольное xD). Я создаю поток, который должен открыть консоль. Но после открытия, во-первых, не работают команды Console.WriteLine()
, иногда выдает ошибку Неверный дескриптор
на Console.Readline()
и Console.Clear()
(другие пока не использовал), еще при втором запуске не дает печатать текст. Помогите мне сделать так, чтобы в этом потоке консоль работала как в "Консольном приложении".
Вот код:
public static class CMD
{
private static string InPut;
private static bool StopConsole = false;
private static bool StartConsole = false;
public static void Console()
{
StartConsole = true;
if (AllocConsole())
{
System.Console.WriteLine("Для выхода наберите exit");
InPut = null;
while (true)
{
InPut = System.Console.ReadLine();
if (InPut == "exit")
break;
switch (InPut)
{
case "cls":
System.Console.Clear();
break;
default:
System.Console.WriteLine("Команда не найдена\n");
break;
}
}
FreeConsole();
StopConsole = true;
}
StartConsole = false;
}
public static void SetConsole()
{
while (true)
if (Keyboard.GetState().IsKeyDown(Keys.LeftControl) && Keyboard.GetState().IsKeyDown(Keys.S) && !StartConsole)
{
Thread ConsoleThread = new Thread(Console);
ConsoleThread.Start();
if (StopConsole)
{
ConsoleThread.Abort();
StartConsole = false;
}
}
}
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool AllocConsole();
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool FreeConsole();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возможно ли в делегат в качестве параметра передать пользовательский конструктор - что бы при вызове конструктора срабатывал делегат а вместе...
Получаю с сервера данные, дата имеет такой формат: 2018-03-15T00:00:00+03:00