c# - 在应用程序退出时处理 RX 线程

标签 c# system.reactive named-pipes

我无法在应用程序退出时正确处理使用 RX 创建的线程。我在 Process Explorer 中看到应用程序关闭后,线程仍在运行,导致 IO 异常。

class Program
{
    static void Main(string[] args)
    {
        CompositeDisposable subsriptions = new CompositeDisposable();

       subscriptions.Add(Observable.Interval(TimeSpan.FromSeconds(15))
                .Subscribe(_ =>
                {
                    getData();

                }));
        Thread.Sleep(TimeSpan.FromSeconds(20));     
            subscriptions.Dispose();
         }   
    }
}

如果您看到我是否取消对 subscription.Dispose() 的注释,线程将终止而不会获取任何数据。任何帮助,将不胜感激。谢谢

最佳答案

subsriptions.Add(...)subscriptions.Dispose() 之间需要某种延迟。两者之间没有延迟,您的应用程序只是简单地订阅并立即处理它们,没有时间让线程完成它们的工作。 (而且 Thread.Sleep(1000) 不起作用,因为它在订阅函数内部,而不是主函数的一部分。)

关于c# - 在应用程序退出时处理 RX 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17864316/

相关文章:

Powershell 命名管道安全性?

c# - 这个逻辑可以简化吗?

c# - 如果有新项目到达,则中断当前项目的处理

c# - 如果设置了 PipeSecurity,命名管道服务器在创建第二个实例时抛出 UnauthorizedAccessException

c# - 这种订阅事件的模式可以吗?

c# - MVVM + Reactive + WCF 回调

c++ - 具有动态内存的命名管道策略?

c# - 数据网格列标题按钮

c# - Android 上的文件下载失败

c# - EF Expression<Func<T, object>> 属性检测