beginread

    5热度

    2回答

    我有一个Stream对象,我使用BeginRead开始读取(显然)到缓冲区;读取完成后调用AsyncCallback函数。在这个函数中,我可以检查用户是否想要获得下一个“块”并再次启动BeginRead过程。 我遇到的问题是用户可能会选择取消而流仍在读取(因此在调用AsyncCallback函数之前),那么如何取消流的读取? 只是为了进一步解释这个问题 - 如果我使用带有Streams Read方

    1热度

    1回答

    我有一些严重的麻烦,从一个线程到另一个NetworkStream.BeginRead()和一个WinForms类(当谈到线程和异步调用等主题时,我是一个真正的新手)之间工作的通信。 特别是,我通过网络套接字连接到远程客户端,只需监听事件。当我收到一个,我可以使用NetworkStream的BeginRead()和EndRead()方法正确地将它收集到一个字符串中,没有问题。我打算然后打开一个新窗体

    3热度

    1回答

    如果服务器中没有大量数据,或者数据量很大,并且我取消注释Thread.Sleep(500)行,那么下面的代码可用。然而,我不想使用Thread.Sleep行,但是如果我删除它,程序将在它读取服务器中的所有数据之前完成。看起来问题是EndRead()在读取所有数据之前不会被阻塞,这是可以理解的,并且应该通过递归调用ReceiveCallback来解决,但事实并非如此。 我有一个在Linux上使用C/

    0热度

    1回答

    我有一个网络服务器,我切换到使用同步Begin ..来处理短命的请求,这是一个巨大的进步。 对于长期居住的人来说,创建了两个线程,随着客户数量的增加,它开始成为一个问题。 通过这些连接传输的数据是4到40个字节的消息。 但是它们不是长度分隔的,它们的长度可以取决于消息中的部分。可悲的是,我无法改变协议。 您可以将协议看作是一种快节奏的telnet终端协议。 我寻找到的读取和解析传入的消息/“线”使

    1热度

    1回答

    当我真的压力测试我的网络代码时,我遇到了一些问题。从本质上讲,一旦插座设置在调用此: NetworkStream networkStream = mClient.GetStream(); networkStream.BeginRead(buffer, 0, buffer.Length, ReadCallback, buffer); private void ReadCallback(IAs

    3热度

    3回答

    我需要从我的虚拟COM端口读取数据并检测消息“Dreq”。一旦我按下连接按钮,它会连接到我的COM8端口并开始在新线程中读取。我也有一个断开按钮,我希望关闭读取并从COM8端口断开连接。但是,我在关闭BeginRead时遇到了问题。 public partial class Form1 : Form { SerialPort sp; Stream stream; I

    13热度

    2回答

    我正在使用NetworkStream & TcpClient使用BeginRead异步接收数据。我需要对此操作执行超时,以便在指定的时间后,读取操作将中止。 据我所知,NetworkStream或TcpClient不支持此功能 - 有一个ReceiveTimeout属性,但这似乎只适用于同步等效项 - 'Read'。 即使是底层的Socket类似乎也不支持其BeginReceive方法中的超时。

    2热度

    2回答

    为什么使用FileOptions.Asynchronous创建FileStream会导致FileStream.BeginRead阻塞调用线程? 这里是代码片段: private static Task<int> ReadFileAsync(string filePath) { var file = new FileStream(filePath, FileMode.Open,