2013-09-25 29 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);