相关疑难解决方法(0)

如何在C#.NET中跨线程锁定控制台?

我有一个记录器类,处理各种颜色的信息显示(耶.).但是,因为它以分开的步骤写入控制台(即将颜色设置为红色,写入文本,将颜色设置为灰色,写入文本,以便呈现"[错误]描述...",错误为红色) ,但我有一个多线程应用程序,所以步骤可以混淆和随机颜色打印随机的东西.

我知道lock关键字,但它不适用于静态类,如控制台.

如果我不清楚,这是一些示例代码:

using System;
using System.Text;

    namespace N.Utilities.IO
    {
        public static class Logger
        {
            private static void WriteColored(string value, ConsoleColor color)
            {
                if (Logger.UseColor)
                {
                    Console.ForegroundColor = color;
                    Console.Write(value);
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                else
                {
                    Console.Write(value);
                }
            }   

            private static void WriteLineColored(string value, ConsoleColor color)
            {
                if (Logger.UseColor)
                {
                    Console.ForegroundColor = color;
                    Console.WriteLine(value);
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                else
                {
                    Console.Write(value);
                }
            }

            private static bool useColor = true;

            public static …
Run Code Online (Sandbox Code Playgroud)

c# console logging locking

9
推荐指数
1
解决办法
5444
查看次数

有没有办法将Console.Write的结果连续镜像到集合(数组,列表等)?

我有一个控制台程序,我想不断将Console.Write的结果镜像到一个集合,我可以实时查看它的尾部.集合可以是数组,列表等.

我假设我必须使用某种事件处理程序?

我不介意被指向第三方库的方向,例如NLog.

更新

我需要在内存中维护一个集合,它反映当前的控制台状态(然后我可以使用套接字发送到远程WinForms应用程序).除了细节之外,我想我可以用几行C#来做到这一点 - 我不想添加一个巨大的日志库而不需要它.

.net c# .net-4.0 visual-studio c#-4.0

5
推荐指数
1
解决办法
1717
查看次数

标签 统计

c# ×2

.net ×1

.net-4.0 ×1

c#-4.0 ×1

console ×1

locking ×1

logging ×1

visual-studio ×1