使用ReactiveObject执行任何操作时,ReactiveUI 5.1 stackoverflowexception

时间:2013-08-09 16:51:30

标签: c# wpf caliburn.micro reactiveui

根据这个问题,使用ReactiveUI和CM应该是在公园散步:ReactiveUI and Caliburn Micro together? 但是我已经在婴儿步骤上遇到了困难。

我按照惯例设置:

ShellViewModel + ShellView以及不同形式的 ContentViewModel + ContentView和一个简单的MEF Bootstrapper。

我也在使用Fody为ReactiveUI编织PropertyChanged和PropertyChanging,但是我也没有Fody就得到了错误。

[Export]
public class ShellViewModel : ReactiveObject
{
    public ShellViewModel()
    {
        ActiveItem = new ContentViewModel();
    }
    public ContentViewModel ActiveItem { get; set; }
}

及其XAML:

<Window x:Class="UiTest.Views.ShellView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ShellView" Height="300" Width="300">
    <ContentControl x:Name="ActiveItem"></ContentPresenter>
</Window>

其他两个文件是空类和用户控件。

在应用程序启动时,我在ReactiveUI.Core中遇到StackOverflowException,这意味着我必须做一些根本错误的事情。如果有人有一些,我会喜欢某种最新的文档。

更新

我在使用RxUI 5.x时只会出现错误,而不是在使用RxUI 4.x时。我已经排除了MEF令人讨厌的问题:如果我将ContentViewModel作为ReactiveObject而不是ShellViewModel,它仍然会给我们一个很好的堆栈溢出。顺便说一句,这发生在ctor上。 Caliburn还没有触及任何东西,所以我想我应该改变主题标题。

堆栈追踪:

System.Reactive.Core.dll!System.Reactive.ObserverBase<System.Exception>.ObserverBase() + 0x23 bytes 
    System.Reactive.Core.dll!System.Reactive.AnonymousObserver<System.Exception>.AnonymousObserver(System.Action<System.Exception> onNext, System.Action<System.Exception> onError, System.Action onCompleted) + 0x38 bytes 
    System.Reactive.Core.dll!System.Reactive.AnonymousObserver<System.Exception>.AnonymousObserver(System.Action<System.Exception> onNext) + 0x4c bytes 
    System.Reactive.Core.dll!System.Reactive.Observer.Create<System.Exception>(System.Action<System.Exception> onNext) + 0xd4 bytes 
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xb9 bytes   
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes   
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes   
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes   
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes   
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes   
ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes   
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes

...大约100.000行后:

ReactiveUI.dll!ReactiveUI.RxApp.Initialize() + 0xcd bytes   
ReactiveUI.dll!ReactiveUI.RxApp.DependencyResolver.get() + 0x7c bytes   
The maximum number of stack frames supported by Visual Studio has been exceeded.    

1 个答案:

答案 0 :(得分:0)

这是当前版本的ReactiveUI中的一个错误,我将立即修复。谢谢你的报告。

更新:已修复此问题,请从图库中抓取5.1.2