Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 带有ReactiveUI的UWP:已部署应用程序中的InteropServices错误,而不是本地错误(无论是调试模式还是发布模式)_C#_Uwp_Reactiveui - Fatal编程技术网

C# 带有ReactiveUI的UWP:已部署应用程序中的InteropServices错误,而不是本地错误(无论是调试模式还是发布模式)

C# 带有ReactiveUI的UWP:已部署应用程序中的InteropServices错误,而不是本地错误(无论是调试模式还是发布模式),c#,uwp,reactiveui,C#,Uwp,Reactiveui,我的UWP是在VS2017 asure pipelines托管代理上编译的,启用了.Net本机编译。一旦部署,应用程序就会发生系统性崩溃。我使用Raygun记录异常 信息: The text associated with this error code could not be found. Operation is not valid due to the current state of the object. Exception has been thrown by the targe

我的UWP是在VS2017 asure pipelines托管代理上编译的,启用了.Net本机编译。一旦部署,应用程序就会发生系统性崩溃。我使用Raygun记录异常

信息:

The text associated with this error code could not be found. Operation is not valid due to the current state of the object.
Exception has been thrown by the target of an invocation.
堆栈跟踪:

System.Runtime.InteropServices.McgMarshal.ThrowOnExternalCallFailed(Int32, RuntimeTypeHandle) + 0x21:null
__Interop.ComCallHelpers.Call(__ComObject, RuntimeTypeHandle, Int32, Void*, Void*) + 0x48:null
System.ComponentModel.PropertyChangedEventHandler__Impl.Invoke(__ComObject, Object, PropertyChangedEventArgs) + 0x9f:null
System.Action`2.InvokeClosedStaticThunk(T1, T2) + 0x2e:null
System.ComponentModel.PropertyChangedEventHandler.DynamicInvokeImpl(Object, IntPtr, InvokeUtils.ArgSetupState&) + 0x62:null
System.InvokeUtils.CalliIntrinsics.Call(IntPtr, Object, Object, IntPtr, InvokeUtils.ArgSetupState&) + 0x43:null
System.InvokeUtils.CallDynamicInvokeMethod(Object, IntPtr, Object, IntPtr, IntPtr, Object, Object[], BinderBundle, Boolean, Boolean, Boolean) + 0x12f:null
我的主要问题是,我无法在我的开发环境(VS2019)上重现崩溃,无论是在调试模式还是发布模式下

我知道导致撞车的最初动作,但不明白为什么会这样

我有一个
用户控件

<UserControl
    x:Class="MyProject.Shared.Controls.Etablissements"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:vm="using:MyProject.ViewModels.Interfaces"
    mc:Ignorable="d"
    d:DataContext="{d:DesignInstance vm:IMyControlViewModel}">

    <ComboBox Header="Item" ItemsSource="{Binding Items}" SelectedItem="{Binding Item, Mode=TwoWay}" x:Name="ComboBox">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}" Foreground="{Binding Color}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</UserControl>
然后,在使用
MyControl
的页面视图模型的构造函数中,我有以下可观察订阅,当
SomeId
(默认情况下初始值为0)变为正值时,会导致崩溃:

this
    .WhenAnyValue(x => x.SomeId, id => id <= 0)
    .ObserveOn(RxApp.MainThreadScheduler)
    .Subscribe(isEnabled => MyControlViewModel.IsEnabled = isEnabled)
    .DisposeWith(Disposables);
堆栈跟踪:

ReactiveUI.WeakEventManager`3.WeakHandlerList.DeliverEvent(Object, TEventArgs) + 0xfa:null
ReactiveUI.WeakEventManager`3.PrivateDeliverEvent(Object, TEventArgs) + 0x188:null
ReactiveUI.WeakEventManager`3.DeliverEvent(TEventSource, TEventArgs) + 0x220:null
ReactiveUI.ReactiveList`1.ReactiveUI.IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs) + 0x18:null
ReactiveUI.IReactiveObjectExtensions.ExtensionState`1.raisePropertyChanged(String) + 0x8a:null
ReactiveUI.IReactiveObjectExtensions.raisePropertyChanged[TSender](TSender, String) + 0x15e:null
ReactiveUI.IReactiveObjectExtensions.RaiseAndSetIfChanged[TObj, TRet](TObj, TRet&, TRet, String) + 0x6e:null
MyProject.ViewModels.Controls.MyControlViewModel.set_IsEnabled(Boolean) + 0x29:null
MyProject.ViewModels.MyPageViewModel.<>c__DisplayClass79_0.<.ctor>b__26(Int64) + 0x21:null
ReactiveUI.WeakEventManager`3.WeakHandlerList.DeliverEvent(对象,TevenTargets)+0xfa:null
ReactiveUI.WeakEventManager`3.PrivateDeliverEvent(对象,TEventArgs)+0x188:null
ReactiveUI.TeventManager`3.DeliverEvent(TEventSource,TEventArgs)+0x220:null
ReactiveUI.ReactiveList`1.ReactiveUI.IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs)+0x18:null
ReactiveUI.IReactiveObjectExtensions.ExtensionState`1.raisePropertyChanged(字符串)+0x8a:null
ReactiveUI.IReactiveObjectExtensions.raisePropertyChanged[TSender](TSender,字符串)+0x15e:null
ReactiveUI.IReactiveObjectExtensions.RaiseAndSetIfChanged[TObj,TRet](TObj,TRet&,TRet,String)+0x6e:null
MyProject.ViewModels.Controls.MyControlViewModel.set_IsEnabled(布尔)+0x29:null
MyProject.ViewModels.MyPageViewModel.c_uuu显示类79_0.b_uu26(Int64)+0x21:null

您好,我注意到您的组合框的SelectedItem的绑定方法设置为TwoWay,这是由此问题引起的吗?尝试将其设置为单向并运行,以查看是否仍然崩溃。它必须是双向的,让用户在组合框中选择一个项目,然后在ViewModel上设置SelectedItem。顺便说一句,组合框本身运行良好。崩溃发生在我试图禁用它的时候。我试图构建一个项目来实现你的UserControl,它的IsEnabled属性工作得很好,但我不知道这是否是你编写代码的方式。你能发布最低运行代码吗?你部署了应用程序吗?在调试/发布模式下,它在我的机器上运行良好。我不明白为什么它一次都没有部署。我可以在已部署的应用程序上系统地再现崩溃,但在本地应用程序上却无法再现。我认为这可能是问题的原因。我部署了应用程序。它在本地运行良好。您可以尝试使用try-catch查找问题、生成安装包并在其他设备上部署调试。但是我还是希望你能提供最少的运行代码,这样我可以更好地帮助你。嗨,我注意到你的组合框的SelectedItem的binding方法被设置为TwoWay,这是由这个问题引起的吗?尝试将其设置为单向并运行,以查看是否仍然崩溃。它必须是双向的,让用户在组合框中选择一个项目,然后在ViewModel上设置SelectedItem。顺便说一句,组合框本身运行良好。崩溃发生在我试图禁用它的时候。我试图构建一个项目来实现你的UserControl,它的IsEnabled属性工作得很好,但我不知道这是否是你编写代码的方式。你能发布最低运行代码吗?你部署了应用程序吗?在调试/发布模式下,它在我的机器上运行良好。我不明白为什么它一次都没有部署。我可以在已部署的应用程序上系统地再现崩溃,但在本地应用程序上却无法再现。我认为这可能是问题的原因。我部署了应用程序。它在本地运行良好。您可以尝试使用try-catch查找问题、生成安装包并在其他设备上部署调试。但我仍然希望您能提供最低限度的运行代码,以便我能更好地帮助您。
ReactiveUI.WeakEventManager`3.WeakHandlerList.DeliverEvent(Object, TEventArgs) + 0xfa:null
ReactiveUI.WeakEventManager`3.PrivateDeliverEvent(Object, TEventArgs) + 0x188:null
ReactiveUI.WeakEventManager`3.DeliverEvent(TEventSource, TEventArgs) + 0x220:null
ReactiveUI.ReactiveList`1.ReactiveUI.IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs) + 0x18:null
ReactiveUI.IReactiveObjectExtensions.ExtensionState`1.raisePropertyChanged(String) + 0x8a:null
ReactiveUI.IReactiveObjectExtensions.raisePropertyChanged[TSender](TSender, String) + 0x15e:null
ReactiveUI.IReactiveObjectExtensions.RaiseAndSetIfChanged[TObj, TRet](TObj, TRet&, TRet, String) + 0x6e:null
MyProject.ViewModels.Controls.MyControlViewModel.set_IsEnabled(Boolean) + 0x29:null
MyProject.ViewModels.MyPageViewModel.<>c__DisplayClass79_0.<.ctor>b__26(Int64) + 0x21:null