我想问你为什么我的方法StartReading没有被触发?我期待在控制台中“测试”文本,但没有出现。
class Program
{
static void Main(string[] args)
{
Connection test = new Connection();
Console.ReadKey();
}
}
和简单的呼叫
_bulk_docs
答案 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