2010-10-25 93 views
2

這裏是在C#運行的線程在C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System; 
using System.Threading; 

namespace create_thread 
{ 
     class Program 
    { 
     public delegate void ThreadStart(); 

     static void Main(string[] args) 
     { 
      Thread t=new Thread(new ThreadStart(Go)); 
      t.Start(); 
      Go(); 


     } 
     static void Go() 
     { 
      Console.WriteLine("hello"); 

     } 
    } 
} 

運行的線程代碼,但在這裏是錯誤

------ Build started: Project: create_thread, Configuration: Debug x86 ------ 
c:\users\7\documents\visual studio 2010\Projects\create_thread\create_thread\Program.cs(5,7): warning CS0105: The using directive for 'System' appeared previously in this namespace 
c:\users\7\documents\visual studio 2010\Projects\create_thread\create_thread\Program.cs(17,22): error CS1502: The best overloaded method match for 'System.Threading.Thread.Thread(System.Threading.ThreadStart)' has some invalid arguments 
c:\users\7\documents\visual studio 2010\Projects\create_thread\create_thread\Program.cs(17,33): error CS1503: Argument 1: cannot convert from 'create_thread.Program.ThreadStart' to 'System.Threading.ThreadStart' 

Compile complete -- 2 errors, 1 warnings 
Build started 10/25/2010 10:25:40 PM. 
ResolveAssemblyReferences: 
    A TargetFramework profile exclusion list will be generated. 
GenerateTargetFrameworkMonikerAttribute: 
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files. 
CoreCompile: 
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\Microsoft.CSharp.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\mscorlib.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Data.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Xml.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\x86\Debug\create_thread.exe /target:exe Program.cs Properties\AssemblyInfo.cs "C:\Users\7\AppData\Local\Temp\.NETFramework,Version=v4.0,Profile=Client.AssemblyAttributes.cs" 

Build FAILED. 

Time Elapsed 00:00:00.30 
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ========== 

請幫助

+2

修正已生成錯誤之後。你沒有運行你認爲自己的代碼。刪除額外的'使用系統;'語句,看看你得到的。 – Oded 2010-10-25 18:30:44

+2

...並擺脫ThreadStart()委託。 – 2010-10-25 18:32:27

回答

0

不知道目的是什麼,但嘗試刪除該行: public delegate void ThreadStart();

5

問題她e是您正在使用構造函數Thread使用的現有類型。

public delegate void ThreadStart(); 

這將導致你的代碼綁定到你的ThreadStart而不是在System.Threading命名空間的版本,從而導致copmilation錯誤。刪除這個定義。

1

擺脫ThreadStart代表的聲明。你也有一個太多using System聲明:

using System; 
using System.Threading; 

namespace create_thread 
{ 
    class Program 
    {   
     static void Main(string[] args) 
     { 
      Thread t = new Thread(new ThreadStart(Go)); 
      t.Start(); 
      Go(); 
     } 
     static void Go() 
     { 
      Console.WriteLine("hello"); 
     } 
    } 
} 

你也應該知道你的代碼將運行Go方法兩次 - 在後臺線程在主線程上一次,一次 - 所以你會看到「Hello 「兩次在控制檯中。

0

double using System;並刪除委託ThreadStart

2

的問題是,你宣稱自己ThreadStart委託,而不是使用.NET之一。

2

修復您的錯誤,然後刪除自己的ThreadStart委託的定義,並使用.NET Framework版本與正確的簽名