2013-11-13 4 views
3

У меня есть приложение. Во время отладки я записываю важную информацию в файл или интерактивный интерфейс.Добавить тему:

Вот пример: demo

Вы видите первый информационный журнал строка не имеет названия потока. Я хочу добавить имя. Но где?

public static void Start() 
    { 
     lock (SyncVar) 
     { 
      if (State == State.Stopped) 
      { 
       s_State = State.Starting; 
       ThreadStart ts = new ThreadStart(MainCode); 
       s_MainCodeThread = new Thread(ts); 
       s_MainCodeThread.Name = "IvrApplication"; 
       s_MainCodeThread.Start(); 
       Log.Write("IvrApplication Starting..."); 
      } 

И ....

public static void MainCode() 
    { 

     try 
     { 
      s_WorkingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

      Log.Write("IvrApplication::MainCode() Starting..."); 

      // Start Other Threads... 
      try 
      { 

Что касается Бревенчатого, мы имеем

private static Log s_Log; 
    public static Log Log 
    { 
     get { return s_Log; } 
    } 

На самом деле Log является из библиотеки DLL

Здесь парциальные метаданные.

namespace VoiceElements.Common 
{ 
    public class Log 
    { 
     [ThreadStatic] 
     public static string Identifier1; 
     [ThreadStatic] 
     public static string Identifier2; 
     public int LogLevel; 

     public Log(string logname); 

     public bool AlwaysExpanded { get; set; } 

     public event MessageLogged MessageLogged; 

     public void CloseLog(); 
     public void Write(string LogEntry); 

ответ

3

Это первое регистрационное сообщение выводится потока приложения по умолчанию. Вы должны быть в состоянии установить, что:

Thread.CurrentThread.Name = "SomeName"; 

Убедитесь, чтобы сделать этот вызов до Log.Write("IvrApplication Starting...");.

4

Вам просто нужно назвать текущий поток:

Thread.CurrentThread.Name = "myThread"; 
+0

бы больше смысла называть 's_MainCodeThread'. –

0

Вы должны переименовать нить, вызывающий метод MainCode:

public static void MainCode() 
{ 
    //SET A NAME HERE 
    Thread.CurrentThread.Name = "Main thread" 

    try 
    { 
     s_WorkingFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

     Log.Write("IvrApplication::MainCode() Starting..."); 

     // Start Other Threads... 
     try 
     { 
Смежные вопросы