Member 13753157 Ответов: 3

Как преобразовать код из консоли в приложение windows forms


Здравствуйте мои друзья
У меня есть консольный код, и я хочу преобразовать его в приложение windows forms, чтобы построить проект для меня
Пожалуйста, помогите мне
Это и есть код:

/*   Server Program    */
                 
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

public class serv {
    public static void Main() {
    try {
        IPAddress ipAd = IPAddress.Parse("172.21.5.99");
         // use local m/c IP address, and 
         // use the same in the client

/* Initializes the Listener */
        TcpListener myList=new TcpListener(ipAd,8001);

/* Start Listeneting at the specified port */        
        myList.Start();
        
        Console.WriteLine("The server is running at port 8001...");    
        Console.WriteLine("The local End point is  :" + 
                          myList.LocalEndpoint );
        Console.WriteLine("Waiting for a connection.....");
        
        Socket s=myList.AcceptSocket();
        Console.WriteLine("Connection accepted from " + s.RemoteEndPoint);
        
        byte[] b=new byte[100];
        int k=s.Receive(b);
        Console.WriteLine("Recieved...");
        for (int i=0;i<k;i++)
            Console.Write(Convert.ToChar(b[i]));

        ASCIIEncoding asen=new ASCIIEncoding();
        s.Send(asen.GetBytes("The string was recieved by the server."));
        Console.WriteLine("\nSent Acknowledgement");
/* clean up */            
        s.Close();
        myList.Stop();
            
    }
    catch (Exception e) {
        Console.WriteLine("Error..... " + e.StackTrace);
    }    
    }
    
}


Что я уже пробовал:

Я попытался найти решение в Google, но безрезультатно

F-ES Sitecore

Вы не можете конвертировать из консоли в windows forms, вам придется создать проект winforms и скопировать релевантные биты кода в соответствующие события. Для вывода вам, вероятно, нужно будет добавить что-то в форму, в которую вы можете писать. Теперь, когда вы перешли от однопоточной консоли к многопоточным формам, вам, вероятно, также потребуется реализовать некоторую многопоточность.

3 Ответов

Рейтинг:
2

Leo Chapiro

В вашем случае вам нужно рассмотреть рабочий поток, я бы рекомендовал для простоты BackgroundWorker-Klasse .

Дело в том, что ваш графический интерфейс будет заморожен таким блокирующим действием, как вы это делаете:

/* Initializes the Listener */
        TcpListener myList=new TcpListener(ipAd,8001);

/* Start Listeneting at the specified port */        
        myList.Start();


Рейтинг:
0
Рейтинг:
0

OriginalGriff

В принципе, нет.
Консольные приложения предназначены для запуска в более старом, традиционном методе и называются "процедурными приложениями": код говорит пользователю, что делать, и постоянно контролирует его работу.
Приложения Windows этого не делают: они реагируют на события (которых существует огромное количество) и в результате этого делают вещи - пользователь (по крайней мере номинально) отвечает и может делать все, что захочет, в любой последовательности, которая ему подходит.

Так куда же пойдет консольное приложение:

"Enter name:" 
"Enter address:"
"Insert to database? (Y/N): "
Приложение windows будет иметь два текстовых поля и кнопку "Вставить" - и пользователь может заполнить то, что он хочет, и нажать кнопку, когда он будет готов.

Таким образом, преобразование консольного приложения в Windows не является простым и не заканчивается "хорошим" приложением windows - и в вашем случае то, что оно заканчивается, является очень неприятным опытом для пользователя, поскольку он не может сказать, было ли приложение разбито или работает, потому что большая часть того, что делает код, выполняет так называемые "блокирующие вызовы"; те, которые не возвращаются до тех пор, пока операция не будет полностью завершена, что может занять от нескольких секунд до вечности!

Чтобы использовать этот код в приложении Windows, которое не будет удалено с крайним предубеждением, чрезвычайно сложно: вам нужно будет узнать о потоковой передаче, вызове и о том, как получить и представить информацию пользователю.

В принципе, если вы хотите, чтобы приложение для чата Windows играло с вами, найдите приложение для чата Windows - их много - вы не хотите начинать с консольной версии!