【发布时间】:2012-08-01 06:18:46
【问题描述】:
我需要在控制台中同时写两件事。我必须显示递归函数从递归返回时的部分结果(我将在此处等待时间),并且在屏幕的其他部分我必须写下堆栈已满的百分比。
这必须同时进行。 如何在 C# 中执行此操作?
编辑:也必须更新进度。
【问题讨论】:
标签: c# multithreading location
我需要在控制台中同时写两件事。我必须显示递归函数从递归返回时的部分结果(我将在此处等待时间),并且在屏幕的其他部分我必须写下堆栈已满的百分比。
这必须同时进行。 如何在 C# 中执行此操作?
编辑:也必须更新进度。
【问题讨论】:
标签: c# multithreading location
您可以使用Console 类中的各种属性设置写入位置,例如CursorLeft 和CursorTop。您不能同时写入两个位置 - 只需写入一个位置,然后立即写入另一个位置。那应该足够接近。
避免竞争条件的两个选项:
在单个线程中执行所有控制台写入,例如使用生产者/消费者写入队列
使用锁定 - 只需有一个方法在锁定中执行完整的“设置位置和写入”操作。
【讨论】:
如果你的主线程正在等待,忙于你的递归函数,唯一的选择是使用另一个线程来显示堆栈的百分比。
【讨论】: