Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 23.03.2014
Сообщений: 23

Перевод приложения с бесконечным циклом на Windows Forms

23.04.2014, 13:40. Показов 777. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как вот этот код можно перевести на winformapp помогите пожалуйста?
сам пробовал но не получилось из-за while(true) приложение зависает
на консоле все нормально работает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
static void Main(string[] args)
        {   
            SerialPort port;
            Console.WriteLine("Input port: ");
            String pp = Console.ReadLine();
            
            port = new SerialPort(pp, 9600, Parity.None, 8, StopBits.One);
  
            port.Open();
            Console.WriteLine("port opened");
            IPHostEntry lipa = Dns.Resolve("127.0.0.1");
                IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 9988);
                Socket s = new Socket(lep.Address.AddressFamily,
                    SocketType.Stream, ProtocolType.Tcp);
            try
            {
               
                Console.WriteLine("connected");
                Socket handler;
                s.Bind(lep); 
                s.Listen(1);
                            
                    while (true)
                    {  
                        Console.WriteLine("Waiting for a connection on port: "+lep);
 
                        string data = null;
                        string[] text = null;
                        string[] split = null;
                        handler = s.Accept();
                        while (true)
                        {
                            
                            
                            byte[] bytes = new byte[1024];
                            Console.WriteLine("Listen");//s.Accept();
                            int bytesRec = handler.Receive(bytes);
                           
                            handler.Shutdown(SocketShutdown.Both);
                            handler.Close();
                            
                            data += Encoding.ASCII.GetString(bytes, 0, bytesRec); 
                           
                            split = data.Split(new string[] { "print=" }, StringSplitOptions.None);
                            
                            text = split[1].Split(new string[] { "=" }, StringSplitOptions.None);
                            text[0] = text[0].Replace("%20", " ");
                            text[0] = text[0].Replace("&_", "");
                            
                            Console.Write(""+text[0]+"");
                            data = null;
                            /*
                            if (data.IndexOf("<TheEnd>") > 1)
                            {
                                break;
                            }*/
                            port.Write("\r\n");
                            port.Write(text[0]);
                            
                        
                        }
                        
                        s.Close();
                        port.Close();  
                       
                    } 
                    
            }
            catch (Exception e)
            {
                Console.Write(e.ToString());
                Console.ReadLine();
            }
 
            }
 
 
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2014, 13:40
Ответы с готовыми решениями:

Откликаемость приложения с бесконечным циклом
ситуация: имеется &quot;бесконечный&quot; цикл. если при его выполнении кликнуть по окну, винда определяет окно как &quot;Не отвечает&quot;. ...

Перевод с консольного приложения на Windows Forms
Помогите пожалуйста перевести функцию, которая написано в консоле на с++ в Windows Forms. Заранее спасибо. void...

Поток с бесконечным циклом
Добрый вечер всем. Пишу простенькую игру, появилась необходмость в дополнительном потоке. Как не крутил поставленную задачу над игрой,...

3
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
23.04.2014, 14:42
Совет очень простой. Этот код нужно поместить в отдельный поток. Из-за того, что ваш while(true) выполняется в том же потоке, что и отрисовка интерфейса, то соответственно "зависает" из-за того, что выполняется бесконечный цикл. Как только выведете в отдельный поток. Сразу все проблемы решаться.
1
0 / 0 / 2
Регистрация: 23.03.2014
Сообщений: 23
23.04.2014, 15:26  [ТС]
Если не трудно можете показать как это реализовать на примере?

попробовал так все равно зависает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
new Thread(Listener).Start();
 
public void Listener()
{
 while (true)
                        {
                            
                            
                            byte[] bytes = new byte[1024];
                            Console.WriteLine("Listen");//s.Accept();
                            int bytesRec = handler.Receive(bytes);
                           
                            handler.Shutdown(SocketShutdown.Both);
                            handler.Close();
                            
                            data += Encoding.ASCII.GetString(bytes, 0, bytesRec); 
                           
                            split = data.Split(new string[] { "print=" }, StringSplitOptions.None);
                            
                            text = split[1].Split(new string[] { "=" }, StringSplitOptions.None);
                            text[0] = text[0].Replace("%20", " ");
                            text[0] = text[0].Replace("&_", "");
                            
                            Console.Write(""+text[0]+"");
                            data = null;
                            /*
                            if (data.IndexOf("<TheEnd>") > 1)
                            {
                                break;
                            }*/
                            port.Write("\r\n");
                            port.Write(text[0]);
                            
                        
                        }
}
0
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
23.04.2014, 16:49
Используйте этот пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
    {
        static void Main(string[] args)
        {
            Thread t = new Thread(myFun);
            t.Name = "Thread1";
            t.IsBackground = false;
            t.Start();
            Console.WriteLine("Main thread Running");
            Console.ReadKey();
        }
 
        static void myFun()
        {
            Console.WriteLine("Thread {0} started", Thread.CurrentThread.Name);
            Thread.Sleep(2000);
            Console.WriteLine("Thread {0} completed", Thread.CurrentThread.Name);
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2014, 16:49
Помогаю со студенческими работами здесь

Проблема с бесконечным циклом
В данном коде по какой-то причине получается бесконечный цикл(отмечено --------------------------) public static void...

Проблема с бесконечным циклом
Пишу программу на c#, которая получает от нескольких игроков ответы на вопросы, составляющие историю, максует их и выдаёт что-то смешное,...

Закрывается задача с бесконечным циклом
var task = Task.Run(async () =&gt; { while (true) { try ...

Не работает cout перед бесконечным циклом
Здравствуйте,столкнулся с небольшой проблемкой:std::cout ничего не выводит если его вписать перед бесконечным циклом,хотелось бы узнать...

Как быть с бесконечным циклом в NetBeans!
Просто тупо перезапускать среду, или есть какие либо внутренние способы ... Добавлено через 15 часов 18 минут ... внутренние...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru