2013-07-11 3 views
0

http://www.drdobbs.com/cpp/ccli-threading-part-i/184402018의 자습서를 따라 Visual C++에서 winform의 스레드 프로그래밍을 수행하려고합니다. 나는 Win32 콘솔 프로젝트를 열고 다음과 같이 내가 코드를 배치하는 내부 그것에 빈 CPP 파일을 추가 :Visual C++/CLI의 스레드 프로그램에서 오류가 발생했습니다

  1. 오류 C2726 :

    using namespace System; 
        using namespace System::Threading; 
    
        public class ThreadX{ 
    
         int loopStart; 
         int loopEnd; 
         int dispFrequency; 
    
         public: 
    
    
         ThreadX(int startValue, int endValue, int frequency) 
         { 
          loopStart = startValue; 
          loopEnd = endValue; 
          dispFrequency = frequency; 
         } 
    
         void ThreadEntryPoint() 
         { 
          String^ threadName = Thread::CurrentThread->Name; 
    
          for (int i = loopStart; i <= loopEnd; ++i) 
          { 
           if (i % dispFrequency == 0) 
           { 
            Console::WriteLine("{0} : i = {1,10}", threadName, i); 
           } 
          } 
          Console::WriteLine("{0} thread terminating", threadName); 
         } 
    }; 
    
    int main() 
    { 
        ThreadX o1 = gcnew ThreadX(0, 1000000,200000); 
        Thread^ t1 = gcnew Thread(gcnew ThreadStart(o1, &ThreadX::ThreadEntryPoint)); 
        t1->Name = "t1"; 
    
        ThreadX o2 = gcnew ThreadX(-1000000, 0, 200000); 
        Thread^ t2 = gcnew Thread(gcnew ThreadStart(o2, &ThreadX::ThreadEntryPoint)); 
        t1->Name = "t2"; 
    
        t1->Start(); 
        t2->Start(); 
        Console::WriteLine("Primary Thread Terminating"); 
    } 
    

    그러나이 나에게 같은 오류를 준다 'gcnew' '초기화': 만 관리되는 형식

  2. 오류 C2440와 객체를 생성하기 위해 사용될 수있다 '의 ThreadX *' '의 ThreadX'없음 생성자에서 변환이 소스 유형, 또는 생성자 오버로드 확인을 할 수없는 것은 모호
  3. 오류 C3364 : 'System :: Threading :: ThreadStart': 대리자 생성자에 대한 인수가 잘못되었습니다. 대리자 대상은 구성원 함수에 대한 포인터이어야합니다.

답변

1

다른 작업 인 C++ 및 CLI를 혼합합니다. 목록의 코드가 말하는 정확히

public ref class ThreadX 
+0

public class ThreadX 

교체 - 명확하게 복사 및 붙여 넣기 오류! – doctorlove

+0

@doc : C++과 C++/CLI가 섞이는 것을 방지하기 위해 다음 문을 제거하십시오 :'#include namespace std;를 사용합니다 ' –

+0

@ me? 나는 그들을 추가하지 않았다 @ user2572521 - 치명적인 복사와 붙여 넣기와 여분의 물건 만들기 오류 :-) – doctorlove

관련 문제