繁体   English   中英

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

[英]Call non static method from different non static class

我有Mainpage.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构造函数中的Initialize调用实例化)),因此实例化页面以仅访问方法是一个非常糟糕的主意。 我强烈建议您对代码进行结构化,这样就不必这样做了。 特别是,您应该查看MVVM模式。

如果仍然要这样做,则可以使用以下代码在UI线程上分派方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM