同时在控制台中的两个位置写入

时间:2012-08-01 06:18:47

标签: c# multithreading location

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

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

编辑:还必须更新进度。

2 个答案:

答案 0 :(得分:3)

您可以使用Console课程中的各种属性设置写作位置,例如CursorLeftCursorTop。你不能在同一时间写两个位置 - 只需写入一个位置然后立即写入另一个位置。那应该足够接近了。

避免竞争条件的两个选项:

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

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

答案 1 :(得分:0)

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