小编Ast*_*sti的帖子

为什么 Async.Sequential 不能按预期工作(但在 FSI 中工作)?

open System
open System.Net

let fetchUrlAsync url = 
    async {
        Console.WriteLine(sprintf "Fetch <%s>" url)
        let req = WebRequest.Create(Uri(url)) 
        use! resp = req.AsyncGetResponse()   
        use stream = resp.GetResponseStream() 
        use reader = new IO.StreamReader(stream) 
        let html = reader.ReadToEnd() 
        Console.WriteLine(sprintf "finished downloading %s. Length = %i" url html.Length)
    }

[<EntryPoint>]
let main argv =
    ["http://bing.com"; "http://ya.ru"; "http://google.com"]
    |> List.map fetchUrlAsync
    |> Async.Sequential
    |> Async.Ignore
    |> Async.RunSynchronously


Run Code Online (Sandbox Code Playgroud)

输出:

Fetch <http://bing.com>
Fetch <http://ya.ru>
Fetch <http://google.com>
finished downloading http://google.com. Length = 50592
finished downloading http://ya.ru. Length = …
Run Code Online (Sandbox Code Playgroud)

f# asynchronous f#-interactive

4
推荐指数
1
解决办法
98
查看次数

如何使用 .net 中的 RX 扩展来使用 UDP 字节流

我想出了这个解决方案。(尚未测试)通过网络上的大量弹跳。

Private Function ObserveUDP() As IObservable(Of bytes())


    Dim f = Function(observer)
                Dim endpoint = New IPEndPoint(IPAddress.Parse(Me.IpAdress), Me.IPPort)
                Dim client = New UdpClient(endpoint)

                Dim obs = observable.*emphasized text*Generate(Of Task(Of UdpReceiveResult), UdpReceiveResult) _
                      ( Nothing _
                      , Function(task As Task(Of UdpReceiveResult)) task Is Nothing Or Not task.IsCompleted() _
                      , Function(task As Task(Of UdpReceiveResult)) client.ReceiveAsync() _
                      , Function(task As Task(Of UdpReceiveResult)) task.Result)

                Dim observable = obs.Select(Function(r) r.Buffer)

                dim handle = observable.Subscribe(observer)

                Dim df = Sub() 
                    client.Close()
                    handle.Dispose()
                End Sub

                Return Disposable.Create(df)

    End Function …
Run Code Online (Sandbox Code Playgroud)

.net vb.net dispose udp system.reactive

3
推荐指数
1
解决办法
1519
查看次数

.NET延迟加载/预先计算的属性

我的班级有复杂的财产:

    private Image m_LogoImage=null;

    public Image LogoImage
    {
        get
        {
            if (m_LogoImage == null && File.Exists(Data.LogoFileUrl))
            {
                DrawingImage image = DrawingImage.FromFile(Data.LogoFileUrl);
                m_LogoImage = Image.GetInstance(image, new Color(1, 1, 1));
            }
            return m_LogoImage;
        }
    }
Run Code Online (Sandbox Code Playgroud)

LogoImage.get是客户端第一次调用它时非常慢且耗费资源的操作,该属性计算图像并将结果存储在私有变量m_LogoImage中.
这对我来说非常基本..NET支持自动属性(public string P {get;set;}).它是否支持自动存储复杂的属性?

.net c# properties

0
推荐指数
1
解决办法
466
查看次数