【问题标题】:How to print thread code in command prompt如何在命令提示符下打印线程代码
【发布时间】:2022-01-23 02:13:06
【问题描述】:

什么叫“线程 0x2ef0”,如何在命令提示符中显示它?我尝试执行代码,它只显示在输出框中或调试器代码中,有没有可能打印这个十六进制十进制线程代码的方法?到命令提示符?我正在使用具有 Windows 属性的 Windows 应用程序,但是当我在具有控制台属性的 Windows 应用程序中尝试时,“线程 0x2ef0”没有显示出来,所以我想在命令提示符下显示它。

【问题讨论】:

    标签: c#


    【解决方案1】:

    可能是其中之一:

    using System;
    using System.Diagnostics;
    using System.Threading;
    
    namespace Demo
    {
        internal static class Program
        {
            private static void Main()
            {
                Console.WriteLine("0x{0:x4}", Thread.CurrentThread.ManagedThreadId);
                Console.WriteLine("0x{0:x4}", Thread.CurrentThread.GetHashCode());
                Console.WriteLine("0x{0:x4}", AppDomain.GetCurrentThreadId());
                Console.WriteLine("0x{0:x4}", Process.GetCurrentProcess().Threads[0].Id);
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      尝试使用CurrentThread property 以获取您正在寻找的数据。

      Task<Double> t = Task.Run( () => { ShowThreadInformation("Main Task(Task #" + Task.CurrentId.ToString() + ")");
                                           for (int ctr = 1; ctr <= 20; ctr++)
                                             tasks.Add(Task.Factory.StartNew(
                                                () => { ShowThreadInformation("Task #" + Task.CurrentId.ToString());
                                                        long s = 0;
                                                        for (int n = 0; n <= 999999; n++) {
                                                           lock (rndLock) {
                                                              s += rnd.Next(1, 1000001);
                                                           }
                                                        }
                                                        return s/1000000.0;
                                                      } ));
      
                                          Task.WaitAll(tasks.ToArray());
                                          Double grandTotal = 0;
                                          Console.WriteLine("Means of each task: ");
                                          foreach (var child in tasks) {
                                             Console.WriteLine("   {0}", child.Result);
                                             grandTotal += child.Result;
                                          }
                                          Console.WriteLine();
                                          return grandTotal / 20;
                                     } );
        Console.WriteLine("Mean of Means: {0}", t.Result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        相关资源
        最近更新 更多