2012-08-01 52 views
0

我需要在控制台中同时写两个东西。我必须显示递归函数从递归返回时的部分结果(我将在这里等待一段时间),而在屏幕的其他部分,我必须写入已满的堆栈的百分比。同时在控制台的两个位置写入

这必须在同一时间完成。 如何在C#中执行此操作?

编辑:此外,必须更新进度。

回答

3

您可以使用Console类中的各种属性(例如CursorLeftCursorTop)来设置书写的位置。您不能完全同时写入两个职位 - 只需写入一个位置,然后立即写入另一个位置。这应该足够接近。

两个选项,以避免竞争条件:

  • 执行所有控制台在一个单独的线程,例如写使用生产者/消费者队列的写入方式

  • 使用锁定 - 只需要一个方法在锁中完成“设置位置和写入”操作。

+0

谢谢。我会尝试看看它是怎么回事 – robertpas 2012-08-01 06:25:23

+0

@robertpas:请参阅我的编辑更清晰:) – 2012-08-01 06:26:26

+0

它的工作。谢谢您的帮助 – robertpas 2012-08-01 07:29:38

0

如果您的主线程正在等待,忙于递归函数,唯一的选择是使用另一个线程来显示堆栈的百分比。