在c#中运行线程

时间:2010-10-25 18:28:48

标签: c# multithreading

这是在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 ==========

请帮助

6 个答案:

答案 0 :(得分:5)

这里的问题是你正在隐藏Thread构造函数使用的现有类型。

public  delegate void ThreadStart(); 

这会导致您的代码绑定到ThreadStart而不是System.Threading命名空间中的版本,从而导致出现复制错误。删除此定义。

答案 1 :(得分:2)

问题是您声明了自己的ThreadStart委托而不是使用.NET委托。

答案 2 :(得分:2)

修复错误后删除自己的ThreadStart Delegate定义并使用带正确签名的.net Framework版本

答案 3 :(得分: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”。

答案 4 :(得分:0)

不知道目的是什么,但尝试删除该行: public delegate void ThreadStart();

答案 5 :(得分:0)

double using System;并删除您的代理人ThreadStart