C#windows应用程序(winform)如何在不同线程上显示控制台,并分别关闭
在windows应用程序中,我希望能够启动一个控制台,该控制台可能显示应用程序本身的数据,也可能不显示应用程序本身的数据,但也可能用于输入额外信息,或在不需要应用程序本身的情况下更改值(这是50%实用程序50%调试) 现在,我已经谈到了一些问题C#windows应用程序(winform)如何在不同线程上显示控制台,并分别关闭,c#,multithreading,winforms,console,C#,Multithreading,Winforms,Console,在windows应用程序中,我希望能够启动一个控制台,该控制台可能显示应用程序本身的数据,也可能不显示应用程序本身的数据,但也可能用于输入额外信息,或在不需要应用程序本身的情况下更改值(这是50%实用程序50%调试) 现在,我已经谈到了一些问题 关闭控制台将关闭应用程序 如果控制台正在运行某些内容(等待提示),则窗口无法运行 对于运行的窗口,如果其运行控制台无法运行,则执行相同的操作 下面是一些处理控制台的代码 namespace Kproject { public partial cla
- 关闭控制台将关闭应用程序
- 如果控制台正在运行某些内容(等待提示),则窗口无法运行
- 对于运行的窗口,如果其运行控制台无法运行,则执行相同的操作
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将提升控制台,并将阻止应用程序的使用,直到键入退出,我希望它只是静静地坐在后面,直到需要它,或者关闭它而不需要关闭整个程序
如何运行控制台而不与应用程序冲突,并解决之前提到的问题。好吧,您忘记问问题了……您最好不要使用实际的控制台,而是创建一个新表单,该表单上只有一个文本框(可能一个用于显示输出,一个用于输入)虽然我确实考虑过这条路线(目前正在编写一个新的表单,可能最终会达到这个目的),但我仍然相信,必须有一种方式从控制台运行。