像socket BeginReciefeFrom(...)这样的异步文件读取

时间:2015-11-18 10:17:03

标签: c# file sockets asynchronous streamreader

我正在寻找一个能让我读取文件的功能,比如在端口上侦听。一旦找到一个Line,它就会调用一个方法(带回调)。而那是在一个单独的过程中。 我正在使用:

BeginRecieveFrom(socket.bytes, 0, BufferSize, SocketFlags.None, ref endpoint, new AsyncCallback(RecieveFromCallback), state);

我一直在搜索,但找不到任何东西。

2 个答案:

答案 0 :(得分:0)

UsernamePasswordAuthenticationFilter班级支持Stream

以下是一个示例:(读取二进制)

BeginRead()
// This class will keep reading until all requested byte are read.
public static class FileReader
{
    public static void ReadBytes(Stream stream, byte[] buffer, int offset, int count, Action complete)
    {
        stream.BeginRead(buffer, offset, count, (asyncResult) =>
        {
            var bytesRead = stream.EndRead(asyncResult);

            offset += bytesRead;
            count -= bytesRead;

            if (count == 0)
                complete();
            else
                ReadBytes(stream, buffer, offset, count, complete);

        }, null);
    }
}

这将读取,直到[count]个字节被重新加载。这是一个示例 ..

答案 1 :(得分:0)

当然,您可以异步读取文件,因为它是一个IO操作。

我认为您所寻找的内容类似于以下内容,但请注意,此示例使用新的async / await异步模式。

let GetGroup2 s = 
    let pattern = @"(d+)(.+)(d+)"
    let m : Match = Regex.Match(s, pattern) 

    // this generates a warning :
    match m.Success with 
    | true -> 
        if (m.Groups.Count >= 3) then (string)m.Groups.[2] |> Some  else  None
    | false -> None