我需要在应用程序中显示一个窗口,但它是控制台。
我尝试过使用:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
代码保持这样。
static void Main(string[] args)
{
_handler += new EventHandler(Handler);
SetConsoleCtrlHandler(_handler, true);
ConnectToServer();
RequestLoop();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
但是窗口没有打开,如果我先把代码放到窗口打开,但是控制台没有执行命令。
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
_handler += new EventHandler(Handler);
SetConsoleCtrlHandler(_handler, true);
ConnectToServer();
RequestLoop();
}
这两个代码都不起作用。
在第一个代码中,窗口无法打开。
在第二个代码中,窗口打开,但控制台不执行命令
答案 0 :(得分:2)
问题是您在同一个线程中运行控制台和窗口。启动窗口时,由于线程与控制台相同,因此线程正在处理窗口而不是控制台。同时运行控制台和窗口(在单独的线程中): 改变
Application.Run(new Form1());
到
Task.Run(() => Application.Run(new Form1()));
答案 1 :(得分:2)
答案 2 :(得分:1)
试试这个,你忘了' Console.ReadLine();',如果它不是你的控制台应用程序将关闭,你的窗口也是。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Task.Run(() => Application.Run(new Form1()));
Console.ReadLine();
}
}
}