0

我有 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但是当我调用它时,我得到了 vart = new MainPage();

错误

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

我也尝试使用

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

但 Dispather 不被识别。知道如何调用我的方法吗?

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

4

1 回答 1

1

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

如果您仍然想这样做,您可以使用以下代码在 UI 线程上调度您的方法:

await CoreApplication.MainView.CoreWindow.RunAsync(CoreDispatcherPriority.Normal, () => mymethoc);
于 2013-09-25T11:46:45.073 回答