从不同的非静态类调用非静态方法

本文关键字:静态类 静态方法 调用 | 更新日期: 2023-09-27 18:32:39

我有主页.cs我有方法public void websocketRequestGetListOfUni(),然后我有这个类

public class RegisterResponseReceiverRegisterDevice : ResponseReceiver
    {
        public override void onResponseReceived(byte[] header, byte[] response)
        {
            RegisterResponse rr = RegisterResponse.ParseFrom(response);
            var t = new MainPage();
            t.websocketRequestGetListOfUni();
        }
        public override void onError() { }
    }
public void websocketRequestGetListOfUni()
    {
        IntMessage req = IntMessage.CreateBuilder().SetValue(1).Build();
        WebSocketClient.write(3, 7, req, new RegisterResponseReceiverGetListOfUni());
    }

我想在类 RegisterResponseReceiverRegisterDevice 中调用方法 websocketRequestGetListOfUni(),但是当我调用它时,我会得到 var t = new MainPage();

错误

应用程序调用了分配给不同接口的接口 线。

我也尝试使用

this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => mymethoc);

但分歧者不被认可。知道如何调用我的方法吗?

这是主页,以便更好地理解: https://www.dropbox.com/s/oz6qb0naa0u0for/Mainpage.cs.txt

从不同的非静态类调用非静态方法

var t = new MainPage();将实例化页面(包括UI部分(由MainPage构造函数中的Initialise调用实例化)),因此仅为了访问方法而实例化它是一个非常糟糕的主意。我强烈建议您访问您的代码,这样您就不需要这样做了。特别是你应该看看MVVM的父亲。

如果仍要执行此操作,可以使用以下代码在 UI 线程上调度方法:

await CoreApplication.MainView.CoreWindow.RunAsync(CoreDispatcherPriority.Normal, () => mymethoc);