C#windows应用程序(winform)如何在不同线程上显示控制台,并分别关闭

C#windows应用程序(winform)如何在不同线程上显示控制台,并分别关闭,c#,multithreading,winforms,console,C#,Multithreading,Winforms,Console,在windows应用程序中,我希望能够启动一个控制台,该控制台可能显示应用程序本身的数据,也可能不显示应用程序本身的数据,但也可能用于输入额外信息,或在不需要应用程序本身的情况下更改值(这是50%实用程序50%调试) 现在,我已经谈到了一些问题 关闭控制台将关闭应用程序 如果控制台正在运行某些内容(等待提示),则窗口无法运行 对于运行的窗口,如果其运行控制台无法运行,则执行相同的操作 下面是一些处理控制台的代码 namespace Kproject { public partial cla

在windows应用程序中,我希望能够启动一个控制台,该控制台可能显示应用程序本身的数据,也可能不显示应用程序本身的数据,但也可能用于输入额外信息,或在不需要应用程序本身的情况下更改值(这是50%实用程序50%调试)

现在,我已经谈到了一些问题

  • 关闭控制台将关闭应用程序
  • 如果控制台正在运行某些内容(等待提示),则窗口无法运行
  • 对于运行的窗口,如果其运行控制台无法运行,则执行相同的操作
下面是一些处理控制台的代码

namespace Kproject
{

public partial class KGUI : Form
{
    public KGUI()
    {
        InitializeComponent();
    }


    [DllImport("kernel32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool AllocConsole();

    private void Form_Keypress(object sender, KeyPressEventArgs e)
    {
        switch (e.KeyChar)
        {
            case 'c':
                AllocConsole();
                ConsoleCode();
                break;
            case 'b':
                Console.Beep(2000, 100);
                break;
            case 'v':
                string s = Console.ReadLine();
                Console.WriteLine(s);
                break;
            default:
                Console.Beep(6000, 50);
                break;
        }
    }
    private void ConsoleCode()
    {
        string s = "";
        while(s != "exit"){
            s = Console.ReadLine();
            switch (s)
            {
                case "c1":
                    /*
                     * do task
                     */
                    break;
                case "c2":
                    /*
                     * do task
                     */
                    break;
                case "c3":
                    /*
                     * do task
                     */
                    break;
                default:
                    Console.Beep(100, 300);
                    break;
            }
        }
    }
}
点击c将提升控制台,并将阻止应用程序的使用,直到键入退出,我希望它只是静静地坐在后面,直到需要它,或者关闭它而不需要关闭整个程序


如何运行控制台而不与应用程序冲突,并解决之前提到的问题。

好吧,您忘记问问题了……您最好不要使用实际的控制台,而是创建一个新表单,该表单上只有一个文本框(可能一个用于显示输出,一个用于输入)虽然我确实考虑过这条路线(目前正在编写一个新的表单,可能最终会达到这个目的),但我仍然相信,必须有一种方式从控制台运行。