Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有多个命令提示输出的窗体_C#_Winforms_Command Line - Fatal编程技术网

C# 具有多个命令提示输出的窗体

C# 具有多个命令提示输出的窗体,c#,winforms,command-line,C#,Winforms,Command Line,我们现在有了一个针对多个数据库运行的命令行应用程序。 每个数据库都有一个单独的线程。在这些线程中,应用程序执行一些console.write()。我们希望将它们放入带有选项卡的表单应用程序中,每个选项卡都有不同的数据库(和线程) 是否可以将控制台.write()输出到特定选项卡,以便我们知道哪个数据库输出了代码,还是需要重写所有代码?这是我们无法做到的,因为代码在多个地方使用。根据您当前将输出与逻辑隔离的程度,您可以在某种程度上保留原始应用程序的一层,而只重写输出部分(有效地,按照您刚才的建议:

我们现在有了一个针对多个数据库运行的命令行应用程序。 每个数据库都有一个单独的线程。在这些线程中,应用程序执行一些
console.write()
。我们希望将它们放入带有选项卡的表单应用程序中,每个选项卡都有不同的数据库(和线程)


是否可以将
控制台.write()
输出到特定选项卡,以便我们知道哪个数据库输出了代码,还是需要重写所有代码?这是我们无法做到的,因为代码在多个地方使用。

根据您当前将输出与逻辑隔离的程度,您可以在某种程度上保留原始应用程序的一层,而只重写输出部分(有效地,按照您刚才的建议:使
命令.write()
转储到表单)

我相信您想要的是每个选项卡中的多行文本框,它只显示日志输出,对吗

您可以将
command.write()
替换为来帮助您。您只需传入正确的文本框控件,并为其提供要记录的行,它就会将其添加到文本框中


现在需要解决的另一个问题是,在GUI驱动的应用程序中,您不应该只是在主线程上阻塞/等待数据库内容,否则它将变得无响应。因此,请确保将逻辑移到其他地方。

如何启动程序?您可以创建应用程序,为每个程序运行“进程”实例,并重定向输出。如果进行异步操作,应该可以捕获所有输出。

command.write()
?不管是什么,你可以让它做你想做的。。。根据您提供的信息,没有什么可以帮助您。我们现在有多个线程为每个数据库运行1个线程。它们都有一个控制台。write()。我们希望在每个数据库的表单应用程序中创建一个选项卡,只从该线程而不是其他线程获取输出。不幸的是,我们无法更改console.write()(我的错误,我编辑了这个问题),因为代码用于多个应用程序。然后有两个选项,1)“fake”您自己的
控制台
类,该类有一个名为
Write
的方法,并将其包含在GUI应用程序中,或者2)编写一个抽象层,根据您所在的应用程序选择正确的抽象层。