none
Классы и многопоточность RRS feed

  • Вопрос

  • ConsoleCommands ClassCommands = new ConsoleCommands();
    Thread ThreadCommands = new Thread(ClassCommands.Commands);

    ThreadCommands.Start;

    Вылазит ошибка: 

    В качестве оператора могут использоваться только выражения присваивания, вызова, инкремента, декремента и создания нового объекта ServerChat C:\Users\Diamo\source\repos\ServerChat\ServerChat\Program.cs

    Как можно исправить?

    3 марта 2018 г. 12:11

Ответы

  • Вам бы синтаксис языка C# надо подтянуть.

    Первое. У оператора switch ветвь по умолчанию должна называться default:, а не case (default):

    Второе. Start - это метод, а не свойство класса Thread. Следовательно для его вызова нужны круглые скобки: ThreadCommands.Start()


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа DiamondKesha 4 марта 2018 г. 13:35
    4 марта 2018 г. 13:20

Все ответы

  • Что исправить? Вы привели какой-то код и фрагмент текста окна вывода. Как это связано?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    3 марта 2018 г. 20:03
  • *--- ConsoleCommands.cs ---*
        class ConsoleCommands
        {
            public void Commands()
            {
                while (true)
                {
                    string message = Console.ReadLine();
                    switch (message)
                    {
                        case "/":
                            Console.WriteLine("[{TimeString}] [WARN] Неизвестная команда! Введите /help для помощи.");
                            message = null;
                            break;
                        case "/help":
                            Console.WriteLine("/stop - выключить сервер\n/whois - информация о пользователе");
                            message = null;
                            break;
                        case "/stop":
                            Console.WriteLine("[{TimeString}] Выключение сервера...");
                            message = null;
                            break;
                        case (default):
                            Console.WriteLine("{TimeString} [USER]: {Message}");
                            message = null;
                            break;
                    }
                }
            }
        }
    *--- Program.cs ---*
                ConsoleCommands ClassCommands = new ConsoleCommands();
                Thread ThreadCommands = new Thread(ClassCommands.Commands);
    
                SettingsProgram ClassSettings = new SettingsProgram();
                // Импортируем и получаем скрипты из классов --!>
    
                string TimeString = null;
                string NameString = null; // Название чата
                Console.Title = $"Server '{NameString}'";
    
                ClassFiles.FileCreate(); // Вызываем метод от класса.
    
                IPAddress IpString = IPAddress.Parse("127.0.0.1"); // IP-адрес сервера
                int PortString = 5555; // Порт сервера
    
                Console.WriteLine($"[{TimeString}] Сервер {NameString} запускается...");
                Console.WriteLine($"[{TimeString}] IP-адрес сервера: {IpString}\n[{TimeString}] Порт сервера: {PortString}");
    
                try
                {
                    socket.Bind(new IPEndPoint(IpString, PortString)); // Задаём сокету ИП и ПОРТ адрес
                    socket.Listen(0);
    
                    Console.WriteLine($"[{TimeString}] Сервер успешно запустился!\n[{TimeString}] Введите /help для помощи.");
                    ThreadCommands.Start;
                }



    4 марта 2018 г. 6:36
  • Вам бы синтаксис языка C# надо подтянуть.

    Первое. У оператора switch ветвь по умолчанию должна называться default:, а не case (default):

    Второе. Start - это метод, а не свойство класса Thread. Следовательно для его вызова нужны круглые скобки: ThreadCommands.Start()


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа DiamondKesha 4 марта 2018 г. 13:35
    4 марта 2018 г. 13:20
  • Про .start() спасибо, забыл что надо писать скобки.

    Когда я писал просто default мне Visual Studio говорил, чтобы я писал (default).

    4 марта 2018 г. 13:33