gpt4 book ai didi

c#-4.0 - 响应式(Reactive)扩展处理事件一次

转载 作者:行者123 更新时间:2023-12-02 20:17:29 27 4
gpt4 key购买 nike

如果我需要处理某个事件,我通常会这样编写代码:

            // part of browser

UrlEventHandler docReadyDelegate = null;
var documentReady = new UrlEventHandler((sender, args) =>
{
view.DocumentReady -= docReadyDelegate; // unsubscribe
// some code here. Fired then browser's document is ready!
});

docReadyDelegate = documentReady;
view.DocumentReady += docReadyDelegate; // subscribe

view.Navigate("http://google.com");

但我认为它不是最佳的,也不漂亮。我知道可以使用响应式(Reactive)扩展来处理一次事件。怎么办?

最佳答案

试试这个:

    Observable
.FromEventPattern<UrlEventHandler, UrlEventArgs>(
h => view.DocumentReady += h,
h => view.DocumentReady -= h)
.Take(1)
.Subscribe(se =>
{
/* code run only once */
});

由于.Take(1),它只会触发一次,并且它将很好地处理事件处理程序的所有附加和分离。

关于c#-4.0 - 响应式(Reactive)扩展处理事件一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26278343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com