以线程安全的方式设置控制台光标位置

时间:2017-09-28 05:19:05

标签: c# multithreading asynchronous

我有一个可以同时访问许多任务的方法。我正在报告这样的进展:

$http.get(<url>).success(funtion(data){
    console.log(data);
});

我重置了控制台光标位置,以便下次报告时覆盖最后一个数字,这样我就可以在屏幕上输出不错的信息。

我最终遇到的问题似乎是线程读取新位置错误,它会跳出额外的一行并在控制台中混淆我的其他输出信息。

我不确定我需要锁定什么才能锁定控制台所以从读取时间到更新时间不能再次读取并弄乱输出(如果这实际上是问题,我不确定)

我希望能够完全控制它输出的行,因此需要找出方法来阻止多个线程搞乱这个位置。

1 个答案:

答案 0 :(得分:6)

你可以锁定任何东西。如果你认为你没有其他对象可以使用,只需创建一些对象,然后锁定它。

var lck = new object();

void method()
{
    lock(lck)
    {
        Console.WriteLine...
        Console.SetCursorPosition...
    }
}