C# - 新线程无法启动

时间:2016-11-24 09:30:07

标签: c# multithreading

我想问你为什么我的方法StartReading没有被触发?我期待在控制台中“测试”文本,但没有出现。

  class Program
{
    static void Main(string[] args)
    {
        Connection test = new Connection();
        Console.ReadKey();
    }
}

和简单的呼叫

_bulk_docs

4 个答案:

答案 0 :(得分:8)

我不是C#guru,但我认为你需要致电Thread.Start()

 public Connection()
    {
        ClientLogin = new TcpClient("127.0.0.1", 13000);
        StreamLogin = ClientLogin.GetStream();
        NetworkBufferLogin = new DataEncoder(StreamLogin);
        ReadingThread = new Thread(StartReading);
        ReadingThread.Start();
    }

无论如何,单个线程用于单个连接是一个非常坏主意。你应该使用异步IO(这对于TPL和async / await关键字,kudos,.Net来说非常简单和方便,或者至少使用线程池。

您应该将您的计划视为一项业务,并将线程创建为雇用新员工。你会雇佣并为你的企业要求的每项任务解雇一名新员工吗?当然不是。你应雇用一些工人,使他们能够完成你的业务所需的任务。

答案 1 :(得分:1)

你忘了开始主题:

public Connection()
{
    ClientLogin = new TcpClient("127.0.0.1", 13000);
    StreamLogin = ClientLogin.GetStream();
    NetworkBufferLogin = new DataEncoder(StreamLogin);
    ReadingThread = new Thread(StartReading);
    ReadingThread.Start(); // <- here
}

答案 2 :(得分:1)

您需要调用方法&#34;开始()&#34;。

u'\U000025FC'+' Next

我还建议做背景技术。

 ReadingThread = new Thread(StartReading);
 ReadingThread.Start();

这将有助于避免在主踏板完成后冻结程序。

答案 3 :(得分:0)

ReadingThread = new Thread(StartReading);
ReadingThread.Start(); // to start your thread
ReadingThread.Stop(); // to stop your thread
ReadingThread.Sleep(2000); // to sleep(miliseconds) your thread