C# 更新循环中文本的某些值

C# 更新循环中文本的某些值,c#,console-application,C#,Console Application,我只想在控制台应用程序中看到数字更新,以下是我如何尝试实现这一点: int successEntryCount = 0; int failedEntryCount = 0; Console.WriteLine("App Started:"); foreach (var entity in entities) { var res = bll.AsiErtelemeIptalPaketiGonder(entity); if (res.State == Framework.Enti

我只想在控制台应用程序中看到数字更新,以下是我如何尝试实现这一点:

int successEntryCount = 0;
int failedEntryCount = 0;

Console.WriteLine("App Started:");

foreach (var entity in entities)
{
    var res = bll.AsiErtelemeIptalPaketiGonder(entity);
    if (res.State == Framework.Entities.MessageResultState.SUCCESS)
        successEntryCount++;
    else
        failedEntryCount++;

    Console.WriteLine("success :{0}", successEntryCount);
    Console.WriteLine("fail:{0}", failedEntryCount);
}
当然,它复制了行和控制台。清除不是一个好选项,因为文本闪烁太快。我只想看到这些数字更新。

而不是

Console.WriteLine("success :{0}", successEntryCount);
Console.WriteLine("fail:{0}", failedEntryCount);
你可以试试类似的东西

Console.Write("success :{0} fail:{1}            \r", successEntryCount, failedEntryCount);
而不是

Console.WriteLine("success :{0}", successEntryCount);
Console.WriteLine("fail:{0}", failedEntryCount);
你可以试试类似的东西

Console.Write("success :{0} fail:{1}            \r", successEntryCount, failedEntryCount);
使用方法。让我们来看看这个简单的例子:

int successEntryCount = 0,
    failedEntryCount = 10,
    l = Console.CursorLeft,
    t = Console.CursorTop;

for (int i = 0; i < 2000; i++)
{
    Thread.Sleep(100);
    Console.SetCursorPosition(l, t);

    Console.WriteLine("success :{0}", successEntryCount++);
    Console.WriteLine("fail:{0}", failedEntryCount++);
    //or
    //Console.Write("success :{0} fail:{1}", successEntryCount++ , failedEntryCount++);
}
\r表示回车符13,表示光标返回到行首

\b是退格字符8

参考资料:

使用方法。让我们来看看这个简单的例子:

int successEntryCount = 0,
    failedEntryCount = 10,
    l = Console.CursorLeft,
    t = Console.CursorTop;

for (int i = 0; i < 2000; i++)
{
    Thread.Sleep(100);
    Console.SetCursorPosition(l, t);

    Console.WriteLine("success :{0}", successEntryCount++);
    Console.WriteLine("fail:{0}", failedEntryCount++);
    //or
    //Console.Write("success :{0} fail:{1}", successEntryCount++ , failedEntryCount++);
}
\r表示回车符13,表示光标返回到行首

\b是退格字符8

参考资料:

您可以使用Console.SetCursorPosition设置光标位置。另外,不要丢失已记录的现有控制台日志,如-App start:在您的情况下,您可以根据检索到的左侧和顶部位置设置光标位置。可以使用Console.CursorLeft和Console.CursorTop属性检索当前的左侧和右侧位置

int successEntryCount = 0;
int failedEntryCount = 0;

Console.WriteLine("App Started:");

int left = Console.CursorLeft;
int right = Console.CursorTop;

foreach (var entity in entities)
{
    var res = bll.AsiErtelemeIptalPaketiGonder(entity);
    if (res.State == Framework.Entities.MessageResultState.SUCCESS)
        successEntryCount++;
    else
        failedEntryCount++;

    Console.SetCursorPosition(left, right);
    Console.WriteLine("success :{0}", successEntryCount);
    Console.WriteLine("fail:{0}", failedEntryCount);
}
可以使用Console.SetCursorPosition设置光标位置。另外,不要丢失已记录的现有控制台日志,如-App start:在您的情况下,您可以根据检索到的左侧和顶部位置设置光标位置。可以使用Console.CursorLeft和Console.CursorTop属性检索当前的左侧和右侧位置

int successEntryCount = 0;
int failedEntryCount = 0;

Console.WriteLine("App Started:");

int left = Console.CursorLeft;
int right = Console.CursorTop;

foreach (var entity in entities)
{
    var res = bll.AsiErtelemeIptalPaketiGonder(entity);
    if (res.State == Framework.Entities.MessageResultState.SUCCESS)
        successEntryCount++;
    else
        failedEntryCount++;

    Console.SetCursorPosition(left, right);
    Console.WriteLine("success :{0}", successEntryCount);
    Console.WriteLine("fail:{0}", failedEntryCount);
}
如果您真的想在控制台应用程序中创建如此复杂的UI,请使用Miguel de Icaza。如果您真的想在控制台应用程序中创建如此复杂的UI,请使用Miguel de Icaza。