powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потоки, вывод выполнения в консоль
12 сообщений из 12, страница 1 из 1
Потоки, вывод выполнения в консоль
    #38080867
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    class Program
    {       
        static void Main(string[] args)
        { 
           
            for (int i = 0; i < 3; i++)
			{              
                Thread t = new Thread(Test);
                t.Name = Convert.ToString("Thread "+i);                   
                t.Start(1000);                
			}
            Console.ReadLine();
        }

        static void Test(object value)
        {
            for (int i = 0; i <  (int)value; i++)
            {
                Console.Write(string.Format("\rValue: {0}  Thread Name: {1}", i, Thread.CurrentThread.Name));
            }
        }
    }




При таком коде потоки выводят в консоль только в одну строку, вообщем как на картинке, как сделать так что бы каждый поток выводил в свою строку.
Для 3 потоков
Value: 10 Thread Name: Thread 0
Value: 43 Thread Name: Thread 1
Value: 22 Thread Name: Thread 2
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38080907
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002
Код: c#
1.
Console.Write



Код: c#
1.
Console.Write

+ Ln
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38080984
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79Newbie2002
Код: c#
1.
Console.Write



Код: c#
1.
Console.Write

+ Ln

Не совсем понял
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38080986
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,
Console.WriteLine("sdadfsfsd");
вы будете удивлены, но в консоле можно таблицы - примитивы рисовать
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081013
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

Value: 10 Thread Name: Thread 0
Value: 43 Thread Name: Thread 1
Value: 22 Thread Name: Thread 2
Value: 11 Thread Name: Thread 0
Value: 44 Thread Name: Thread 1
Value: 23 Thread Name: Thread 2
Value: 12 Thread Name: Thread 0
Value: 45 Thread Name: Thread 1
Value: 24 Thread Name: Thread 2

Получается так, а я хочу что бы было так и обновлялось только значение Value
Value: 10 Thread Name: Thread 0
Value: 43 Thread Name: Thread 1
Value: 22 Thread Name: Thread 2
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081034
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,
делайте буфер вывода ( можно коллекцией)
и через Console.Clear()
выводите, за одним и lock подучите.
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081062
Newbie2002
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

До Console.Clear() я уже дошел )
А можно примерчик, что то не могу врубится
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081083
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002,
смерть под катом
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
internal class Program
    {
       static readonly Dictionary<int,string> Dictionary=new Dictionary<int, string>(); 
        private static void Main()
        {
            var res = 0;
            while (true)
            {
               
                for (var i = 0; i < 3; i++)
                {
                    var i1 = i;
                    var res1 = res++;
                    new Thread(() =>
                                   {
                                       lock (Dictionary)
                                       {
                                           var val = string.Format("Value: {0} - res={1}", i1, res1);
                                          if (!Dictionary.ContainsKey(i1))
                                          {
                                              Dictionary.Add(i1,val);
                                          }
                                          else
                                          {
                                              Dictionary[i1] = val;
                                          }
                                           Console.Clear();
                                           foreach (var variable in Dictionary.OrderBy(a=>a.Key)) 
                                               Console.WriteLine(variable.Value);
                                       }
                                   }).Start();
                    Thread.Sleep(50);//что бы не дергалась картинка
                }
            }
        }

    }
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081094
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиNewbie2002,
смерть под катом
Словарь наверно лучше сразу допиливать

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 
                       lock (Dictionary)
                        {
                            var val = string.Format("Value: {0} - res={1}", i1, res1);
                            Dictionary.SafeAdd(i1, val);
                            Console.Clear();
                            foreach (var variable in Dictionary.OrderBy(a => a.Key))
                                Console.WriteLine(variable.Value);
                        }

class MyDictionary<TKey, TValue> : Dictionary<TKey, TValue>
        {
            //public new void Add(TKey key, TValue value) // мона и так
            public  void SafeAdd(TKey key, TValue value)
            {
                if (ContainsKey(key))
                    this[key] = value;
                else
                    base.Add(key, value);
            }
        }
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38081103
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,
Вопрос не как сделать, а что сделать, чем меньше кода, тем легче воспринимается код, можно из этого примера и фремворк состряпать а будет ли толк его понимать?
А отвечу просто, лично Вам, такой словарь тут нах не нужен, если вы едите вилкой с ножом будьте любезны ConcurrentDictionary
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38082111
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newbie2002Получается так, а я хочу что бы было так и обновлялось только значение Value
Value: 10 Thread Name: Thread 0
Value: 43 Thread Name: Thread 1
Value: 22 Thread Name: Thread 2

Console.SetCursorPosition(.., ..) + Console.Write(.., ..)
...
Рейтинг: 0 / 0
Потоки, вывод выполнения в консоль
    #38082144
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Value:   Thread Name: Thread 0");
            Console.WriteLine("Value:   Thread Name: Thread 1");
            Console.WriteLine("Value:   Thread Name: Thread 2");


            Point pos1 = new Point(7, 0);
            Point pos2 = new Point(7, 1);
            Point pos3 = new Point(7, 2);

            Random rnd = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 1000; i++)
            {
                var next = rnd.Next(0, 3);

                Point current;
                switch (next)
                {
                    case 0:
                        current = pos1;
                        break;
                    case 1:
                        current = pos2;
                        break;
                    case 2:
                    default:
                        current = pos3;
                        break;
                }

                Console.SetCursorPosition(current.X, current.Y);
                Console.Write(rnd.Next(0, 10));

                Thread.Sleep(100);
            }

            Console.ReadLine();
        }
    }
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потоки, вывод выполнения в консоль
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]