2013-09-27 5 views
0

방금 ​​스레드로 경험하기 시작 했으므로 몇 가지 기본 사항을 얻을 수 없습니다. 어떻게 간격과 스레드에서 콘솔에 10 밀리 초라고 쓸 수 있습니까? 그래서 내가 스레드 클래스가 있습니다콘솔에서 콘솔 출력

public ref class SecThr 
{ 
public: 
    DateTime^ dt; 
    void getdate() 
    { 
     dt= DateTime::Now; 
     Console::WriteLine(dt->Hour+":"+dt->Minute+":"+dt->Second); 
    } 
}; 

int main() 
{ 
    Console::WriteLine("Hello!"); 

    SecThr^ thrcl=gcnew SecThr; 
    Thread^ o1=gcnew Thread(gcnew ThreadStart(SecThr,&thrcl::getdate)); 
} 

내 비주얼 C에서 컴파일 수를 ++ 2010 C++ CLI, C3924, C2825, C2146

답변

1

당신은 단지 잘못된 C++/CLI 코드를 작성하는 오류를 많이 얻을. 가장 눈에 띄는 실수 :

  • 네임 스페이스에게 필요한 시스템 :: 스레딩과 같은 사용하는 클래스에 대한 지시어를 사용하여 누락 당신은 시스템 :: 스레딩을 작성하지 않는 경우 : 스레드 전체에.
  • DateTime과 같은 값 유형에^hat을 사용하지만 컴파일 오류는 아니지만 프로그램 효율에 매우 해를 끼치면 값이 박스에 표시됩니다.
  • 델리게이트 개체가 올바르게 구성되어 있지 않습니다. 첫 번째 인수는 대상 개체이고 두 번째 인수는 함수 포인터입니다. 그것을 다시 쓰기

그것은 작동 있도록 :

using namespace System; 
using namespace System::Threading; 

public ref class SecThr 
{ 
    DateTime dt; 
public: 
    void getdate() { 
     dt= DateTime::Now; 
     Console::WriteLine(dt.Hour + ":" + dt.Minute + ":" + dt.Second); 
    } 
}; 


int main(array<System::String ^> ^args) 
{ 
    Console::WriteLine("Hello!"); 

    SecThr^ thrcl=gcnew SecThr; 
    Thread^ o1=gcnew Thread(gcnew ThreadStart(thrcl, &SecThr::getdate)); 
    o1->Start(); 
    o1->Join(); 
    Console::ReadKey(); 
} 
+0

감사합니다 많이! 두 번째 질문은 - 주파수 1 초 (날짜로 문자열 업데이트)로 콘솔의이 스레드에서 시간을 얻는 방법은 무엇입니까? – user2809652

+1

다른 질문입니다. 질문하려면 Ask Question 버튼을 클릭해야합니다. 당신은 System :: Timers :: Timer 클래스를 체크 한 후에. –