[英]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.