2015-07-04 12 views
5

से दिल की दर प्राप्त करें मैं एक Microsoft बैंड से दिल की दर प्राप्त करने की कोशिश कर रहा हूं। जब भी मूल्य बदलता है तो इसे अद्यतन करना चाहिए। मैं उस मान को TextBlock में प्रदर्शित करने का प्रयास कर रहा हूं। मैं पहली बार इस तरह IBandClient का एक उदाहरण बना सकते हैं और सेट अपने HeartRate.ReadingChanged विधि:माइक्रोसॉफ्ट बैंड

bandClient.SensorManager.HeartRate.ReadingChanged += HeartRate_ReadingChanged; 

तो मैं इस तरह मान को अद्यतन करने का प्रयास करें:

private void HeartRate_ReadingChanged(object sender, Microsoft.Band.Sensors.BandSensorReadingEventArgs<Microsoft.Band.Sensors.IBandHeartRateReading> e) 
{ 
    HeartRate = e.SensorReading.HeartRate; 
} 

heartrate इसलिए की तरह एक int सेट है:

public int HeartRate 
{ 
    get { return (int)GetValue(HeartRateProperty); } 
    set { SetValue(HeartRateProperty, value); } 
} 

// Using a DependencyProperty as the backing store for HeartRate. This enables animation, styling, binding, etc... 
public static readonly DependencyProperty HeartRateProperty = 
    DependencyProperty.Register("HeartRate", typeof(int), typeof(MainPage), new PropertyMetadata(0)); 

TextBlock टेक्स्ट HeartRate पर बाध्य है। हालांकि, HeartRate सेट करने का प्रयास करते समय मुझे यह त्रुटि मिल रही है:

एप्लिकेशन को एक इंटरफ़ेस कहा जाता है जिसे एक अलग थ्रेड के लिए marshalled किया गया था। (HRESULT से अपवाद: 0x8001010E (RPC_E_WRONG_THREAD))

मेरा अनुमान है कि यह HeartRate स्थापित करने के लिए है, जबकि यह अभी भी पहले कॉल से किया जा रहा है कोशिश कर रहा है है।

+0

क्या आपको पता है कि सेंसरमैनगर किसी अन्य धागे से ईवेंट भेज रहा है या नहीं? इसका मतलब यह होगा कि आप यूआई थ्रेड की तुलना में अपने टेक्स्टब्लॉक टेक्स्ट को एक अलग थ्रेड से सेट करने का प्रयास कर रहे हैं, जिसे आप नहीं कर सकते (इसलिए त्रुटि)। – y2bd

उत्तर

3

इस को लागू करने और देखें कि यह कैसे हो जाता है, तब यदि आप अपने पूर्णांक चर चाहते हैं, तो यह स्ट्रिंग के लिए वापस परिवर्तित जब यह एक पाठ-ब्लॉक में प्रदर्शित करने की कोशिश करें।

await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, 
       () => 
       { 
        Textblock.Text = e.SensorReading.HeartRate.ToString()) 
       }).AsTask(); 
संबंधित मुद्दे