2013-10-09 5 views
9

मैं एक विंडोज फोन एप्लिकेशन विकसित कर रहा हूं जो विंडोज रनटाइम घटक (डब्लूआरसी) का उपभोग करता है। गैर-यूआई थ्रेड द्वारा उपयोग किए जाने वाले फ़ंक्शन को विंडोज फोन एप्लिकेशन तक पहुंचने वाले कॉलबैक का उपयोग करने की आवश्यकता होती है।विंडोज फोन में यूआई डिस्पैचर प्राप्त करना 8

void WControlPointCallback::OnListChange(char *pFriendlyName) 
{ 
    // Callback function to access the UI 
    pCallBack->AlertCaller("Message"); 
} 

सबसे पहले डिस्पैचर का उपयोग किए बिना यह

Platform::AccessDeniedException फेंक दिया।

तब मैं this, this और this करने के लिए भेजा। मैंने यूआई से डिस्पैचर प्राप्त करने का प्रयास किया।

var dispatcher = Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; 

यह System.AccessViolationException फेंक दिया तो फिर मैं

pDispatcher = Windows::UI::Core::CoreWindow::GetForCurrentThread()->Dispatcher; 

C++ कोड (WRC) का इस्तेमाल किया .लेकिन यह भी Platform::AccessDeniedException फेंकता है।

विंडोज फोन में यूआई के लिए डिस्पैचर कैसे प्राप्त करें?

+1

कृपया का उपयोग नहीं करते 'कोड tags'' पर जोर देना words' आपको लगता है कि कर रहे हैं 'important'। कोड टैग कोड के लिए हैं। – Charles

+0

@ चार्ल्स सुझाव के लिए धन्यवाद .. – Naren

उत्तर

11

आप विंडोज फोन 8 के लिए सी ++ से प्रेषक नहीं प्राप्त कर सकते हैं: आपको सी # पक्ष पर यूआई डिस्पैचर को कॉल को स्थानांतरित करने की आवश्यकता है, सी ++ पक्ष नहीं।

तुम सिर्फ कुछ इस तरह कर सकते हैं:

class DotNetClass : IWindowsRuntimeInterface 
{ 
    void AlertCaller(string message) 
    { 
     Deployment.Current.Dispatcher.BeginInvoke(() => 
     { 
      MessageBox.Show(message); 
     } 
    } 
} 
+0

यह बहुत अच्छा है.धन्यवाद, यह बहुत समय बचा है। मैं इस मुद्दे के साथ लगभग दो दिनों तक अटक गया। – Naren

+0

धन्यवाद बहुत कम दोस्त! :) – cesarferreira

संबंधित मुद्दे