【发布时间】:2012-04-07 20:24:25
【问题描述】:
所以我已经使用 C# 一天了。我正在编写的第一个应用程序是一个简单的基于控制台的 IRC-Client,但它比我想象的要难。由于我正在从两个流中读取数据:控制台和 irc-server,因此我需要某种非阻塞 I/O。
目前我有以下代码:
while (((sInput = sr.ReadLine()) != null) || ((uuInput = Console.ReadLine()) != null))
{
// stuff
}
但是,这将始终执行 sInput,因为 .ReadLine() 是阻塞的,因此最终会在最后返回 True,因此 OR 的第二个块永远不会被执行。
解决办法是什么?用线程自己实现它?我似乎在标准 C# 库中找不到任何 NIO 库。我更喜欢有一个小而干净的解决方案,因为我不想让这个程序过于复杂。
任何帮助都会非常好。谢谢。
【问题讨论】:
-
仅供参考:您要寻找的是使用异步调用处理 IO;你不想要非阻塞套接字。
标签: c# networking tcp irc