如何为TcpListener编写自己的异步包装器?

时间:2009-09-23 15:38:50

标签: f# asynchronous

两者都没有F#异步包装器(在PowerPack中) TcpListener.BeginAcceptTcpClient()EndAcceptTcpClient()

如何围绕这些创建自己的包装器,以便我可以使用let!async关键字并同时运行它?

1 个答案:

答案 0 :(得分:6)

您是否检查过Async.BuildPrimitive功能?我想你可以做点什么:

type TcpListener with
  member x.AsyncAcceptClient() = 
    Async.BuildPrimitive(x.BeginAcceptTcpClient, x.EndAcceptTcpClient)

创建一个返回适当异步结果的扩展方法。