2013-09-25 61 views
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类,但是当我把它称为我得到在VAR t = new MainPage();

错误

应用程序调用已分配到不同的线程 的接口。

我也尝试使用

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

但Dispather不被认可。任何想法如何调用我的方法?

这里是更好地了解网主页:https://www.dropbox.com/s/oz6qb0naa0u0for/Mainpage.cs.txt

+0

有什么样的线程问题。我的意思是你在线程中执行上面的任务,并且你的主页做了一些与UI相关的任务? – Muctadir

+0

我不完全理解的问题,但类Mainpage是与UI的工作,但这些方法和类,我需要调用此方法是没有做只与数据处理UI的东西。 –

+0

这里是更好的理解主页:https://www.dropbox.com/s/oz6qb0naa0u0for/Mainpage.cs.txt –

回答

1

var t = new MainPage();是要实例化的网页(包括UI的部分(这是由的MainPage构造函数初始化调用)实例化),所以这是一个非常糟糕的主意,以实例化它只是为了获得一种方法。我强烈要求你能够访问你的代码,以便你不需要那样做。特别是你应该看看MVVM模板。

如果您仍然想这样做,你可以使用下面的代码派遣你的方法在UI线程:

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