好的,所以我有点困惑为什么我在任何地方都找不到它,或者如果它不存在那么为什么 Microsoft 没有实现它?
这是我的场景,我有一个 NetworkStream,它有一个可爱的小 bool 值,称为 DataAvailable,我需要的是一个事件,它会跳出并说“嘿,有可用的数据!” (因为我很懒惰,我宁愿被告知有可用的数据,也不愿一遍又一遍地问“好吧,有可用的数据吗?”直到我得到“实际上,这次有”的回答)。
类似 SerialPort 的东西(它有一个很好的事件(DataReceived),友好地通知我正在从端口接收数据)会很好。但我使用的是带有 NetworkStream 的套接字。
如果明显缺少某些东西,请指出正确的方向,但如果没有,这是否意味着我将不得不在 DataAvailable 属性上使用一些数据绑定(bind),并且当它设置为 true 时,调用我自己的“自制”事件/功能?如果这将是这种方式,您能否给我一个小例子来启动球?
编辑
我的完美答案是有人过来向我解释我如何找到/创建与 SerialPort 一起使用的 DataReceived 事件极其相似的东西,但是为通过 NetworkStream 流式传输的 Socket 实现!
再次提前致谢,感激不尽。
最佳答案
只是为了澄清 Thomas 的回答,并为不熟悉 BeginRead 方法并想了解此问题答案的任何人提供解释,您可以调用:
AsyncCallBack MyCallBack = new AsynCallBack(DataReceived);
networkStream.BeginRead(buffer, offset, size, MyCallBack, MyObject);
然后创建 DataReceived 函数:
private void DataReceived(IAsynResult result)
{
//call receive functionality
}
这将调用 DataReceived,与 SerialPort.DataReceived 事件的工作方式非常相似。
关于c# - NetworkStream,是否有类似于 SerialPort 的 DataReceived 的东西? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1237996/