【问题标题】:Console app that opens a new window for each thread started by background worker为后台工作人员启动的每个线程打开一个新窗口的控制台应用程序
【发布时间】:2013-10-23 06:50:57
【问题描述】:

我有一个启动多个不同线程的控制台应用程序。主控制台应用程序将轮询服务并根据响应使用 BackgroundWorker 类生成一个或多个后台线程。目前,这些线程中的每一个都对打开的唯一默认控制台窗口执行 console.writeline,就像通常对控制台应用程序所做的那样。这使得跟踪任何一个线程的进度变得太混乱了。

我希望能够生成一个单独的窗口,每个窗口都将自己的 console.writeline() 写入自己的窗口。完成后,主控制台应用程序窗口将关闭生成的控制台窗口,然后在需要时再次启动它。

我在网上找不到任何有用的东西。我可能没有在搜索中使用正确的关键字。请问这方面有什么帮助吗?

【问题讨论】:

  • 如果这是 WPF,我将拥有每个窗口,每个窗口都启动自己的 BackgroundWorker。
  • 我没有任何起点来创建新窗口作为后台工作进程的一部分。我现在拥有的代码在同一个窗口中显示了所有内容,并且可以正常工作。我正在尝试添加这个新功能,所以目前还没有任何代码..
  • @blam:你的意思是在 MDI 场景中?
  • 看来不可能:A process can be associated with only one console msdn.microsoft.com/en-us/library/windows/desktop/… 将线程ID添加到所有输出行并过滤输出以查看每个线程的结果。
  • 尝试使用彩色输出来控制来自不同线程的控制台。有Console.ForegroundColorConsole.BackgroundColor 属性。

标签: c# .net .net-4.0 console-application


【解决方案1】:

不可能为每个线程有一个单独的控制台窗口。每个进程只能有一个控制台。 你可能想看看这个线程thread having its own console

【讨论】:

    【解决方案2】:

    作为 Vladimir 的 cmets 的后续,这里有一个很好的示例应用程序,它演示了从控制台附加和分离以及更改显示颜色和位置,并围绕 Windows 控制台 API 构建了一些 c# 库。

    http://www.mischel.com/diary/2006/08/19.htm

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-22
      • 2017-05-15
      • 1970-01-01
      • 2012-07-27
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多