我写了一个简单的asynchronousTCP服务器 – 它运作良好。 但是现在我想在Console-Testprogram上输出接收到的数据。 而问题是,这是行不通的! 如果我将MainThread连接到EventHandler,那么程序什么也不做。 debugging显示sc05Server_DataAvailable被调用,但没有发生任何事情。 该scheme仍然是响应。
private void ReadCallback(IAsyncResult asyncResult) { Sc05BdClient sc05BdClient = asyncResult.AsyncState as Sc05BdClient; if (sc05BdClient == null) return; NetworkStream networkStream = sc05BdClient.NetworkStream; int read = networkStream.EndRead(asyncResult); if (read == 0) { lock (clients) { clients.Remove(sc05BdClient); return; } } string data = Encoding.GetString(sc05BdClient.Buffer,read); System.Diagnostics.Debug.Print(data); OnDataAvailable(this,new DataAvailableEventArgs(data)); <---- here Handler is called networkStream.BeginRead(sc05BdClient.Buffer,sc05BdClient.Buffer.Length,ReadCallback,sc05BdClient); } public event EventHandler<DataAvailableEventArgs> DataAvailable; protected virtual void OnDataAvailable(object sender,DataAvailableEventArgs e) { EventHandler<DataAvailableEventArgs> handler = DataAvailable; if (handler != null) handler(sender,e); } public class DataAvailableEventArgs : EventArgs { public string Data; public DataAvailableEventArgs(string data) { Data = data; } }
主程序:
class Program { static void Main() { Sc05BdServer sc05BdServer = new Sc05BdServer(IPAddress.Any,2006); sc05BdServer.DataAvailable += sc05BdServer_DataAvailable; sc05BdServer.Start(); Console.ReadKey(); sc05BdServer.Stop(); } static void sc05BdServer_DataAvailable(object sender,DataAvailableEventArgs e) { Console.WriteLine(e.Data); <--- this is called once } }
我认为这与线程有关 – 但我不知道如何与他们合作。
在Visual Studio 2008中将控制台应用程序转换为Windows应用程序?
如何中止在C中的getchar()命令?
全屏模式下打开Windows控制台程序
如何编写一个C ++控制台窗口程序
System.console()返回null时如何处理java passwd读取?
NotifyIcon点击事件不会触发
将Windows C ++服务器编写为服务或控制台应用程序
如何在空的visual c ++项目(或控制台应用程序)中使用find窗口和sendmessage,
如何检测当前是否在控制台中启用了Windows 10缓冲区包装模式
我可以在Windows控制台使用asp.net web项目文件c#
你可能正在经历一些种族问题,虽然控制台应该是免疫的。 检查这个问题,但请注意,我无法重现该问题: Console.ReadKey()与多线程的奇怪行为
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。