如何在单击列表框时生成新的Rx事件

本文关键字:Rx 事件 单击 列表 | 更新日期: 2023-09-27 18:27:01

我有一个简单的WPF应用程序,它包含一个链接列表。我想从中选择一些,将它们添加到一个"可观察列表"中并订阅它。然后,观察者回调将下载链接,并将继续下一个链接(如果有睡眠的话)。我还可以更新我的UI,让用户知道项目已经进行。

有人能帮我做这个吗

非常感谢。

如何在单击列表框时生成新的Rx事件

我会使用Observable.FromEventPattern首先将链接选择事件的列表框转换为Uri的Observable。

接下来,我将编写一个下载链接的扩展方法。

public static IObservable<bool> DownloadLink(this IObservable<Uri> source)
{
    return Observable.Create<bool>(observer =>
    {
        return source
            .Subscribe(onNext: async link =>
            {
                using (var client = new System.Net.Http.HttpClient())
                {
                    var result = await client.GetStringAsync(link);
                    if (isSuccess)
                        observer.OnNext(true);
                    else
                        observer.OnNext(false);
                }
            }, onError: observer.OnError, onCompleted: observer.OnCompleted);
    });
}

最后,把它挂起来。

uriObservable.DownloadLink().ObserveOnDispatcher().Subscribe( // update ui logic here );