2011-03-15 2 views
1

저는 멀티 스레딩을 처음 접했고 개념 증명을 해왔으며 (VS2008) 스레드 창도 발견했습니다 : enter image description here(VS2008) 스레드 창을 실제로 실행하는 중

내 질문은 : 실행중인 스레드를 코드에 "링크"하려면 어떻게합니까? 예를 들어 스레드 ID (예 : 스레드 창에 표시됨)를 사용하면 어떻게 기록 할 수 있습니까? 또는 인 경우 BeginInvoke() 메서드는 내가 설정 한 'id'인수 (문자열)를 사용합니다 (아래 예제에서 "서비스 A"로 표시). 그러나 스레드 창에서 볼 수 없습니다.

관심 날 것은 내가 실행하여 AsyncCallbacks 및 BeginInvoke (의 병렬 스레드까지 비화하고 있습니다)하지만 난 단지 내가 볼해야한다고 생각 지점에서 스레드 창에 두 개의 작업자 스레드를 볼 수 있다는 것입니다 세. 실제로 나는 할 수 있다고 생각한다. 'Name'이 세 작업자 스레드 인 <No Name>.

// Creating the call back and setting the call back delegate 
AsyncCallback callBackA = new AsyncCallback(AsyncOperationACompleted); 
// callBackB ... 
// callBackC ... 

// Create instances of the delegate, which calls the method we want to execute 
callerA = new DumbEndPoint.AsyncMethodCaller(DumbEndPoint.PretendWorkingServiceCall); 
// callerB ... 
// callerC ... 

// sleep = thread sleep time in milliseconds 
IAsyncResult resultA = callerA.BeginInvoke(sleep, "Service A", callBackA, null); 
// resultB ... 
// resultC ... 

// I expect to see three threads in the Threads Window at this point. 

그때 콜백 대리자 결과를 받고 있어요 :

private void AsyncOperationACompleted(IAsyncResult result) 
    { 
     try 
     {    
      string returnValue = callerA.EndInvoke(result); 
      mySmartDTO.ServiceDataA = returnValue; 
     } 
     catch (Exception ex) 
     { 
      // logging 
      ... 
     } 
    } 

답변

2

당신은에 Thread.Name을 사용할 수 있습니다 참고로

여기 내가 사용하고 코드의 일부입니다 스레드의 이름을 설정하십시오. 이름이 설정되면 스레드 창의 "이름"열에 나타납니다. Service A 당신이, 당신이 PretendWorkingServiceCall에서 같은 것을 할 수있는 스레드 창의 이름 열에 표시 할 이름이라고 가정 예

:

void PretendWorkingServiceCall(int sleepMilliseconds, string name) 
{ 
    System.Threading.Thread.CurrentThread.Name = name; 

    // your code goes here 
} 
+0

그래 - 나는 비트를 해요 바보. 나는 그저 좀 더 놀아서 깨달았다. :) 한 가지는 Thread.CurrentThread.ManagedThreadId는 완전히 다른 id를 리턴한다. –

+0

@Adrian K : 관리되지 않는 스레드 ID (스레드 창에 표시)에 대해서는 AppDomain.GetCurrentThreadId()를 참조하십시오. 그러나 관리되는 스레드 ID가 관리되지 않는 스레드 ID와 일대일이 아닌 시나리오가있을 수 있습니다. 이 방법을 사용하면 얻을 수있는 설명서 및 컴파일러 경고가 세부 사항을 조금 더 설명합니다. –

관련 문제