我有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());
}
我想在课程websocketRequestGetListOfUni()
中使用调用方法RegisterResponseReceiverRegisterDevice
,但是当我调用它时,我得到var t = new MainPage();
错误
应用程序调用了一个分配给不同的接口 线程。
我也尝试使用
this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => mymethoc);
但Dispather无法识别。怎么知道如何调用我的方法?
这是主页以便更好地理解:https://www.dropbox.com/s/oz6qb0naa0u0for/Mainpage.cs.txt
答案 0 :(得分:1)
var t = new MainPage();
将实现页面的实例化(包括UI部分(由MainPage构造函数中的Initialise调用实例化))因此,仅仅为了访问方法而实例化它是一个非常糟糕的主意。我强烈建议你尽可能地覆盖你的代码,这样你就不需要那么做了。特别是你应该看一下MVVM模式。
如果您仍想这样做,可以使用以下代码在UI线程上调度方法:
await CoreApplication.MainView.CoreWindow.RunAsync(CoreDispatcherPriority.Normal, () => mymethoc);