2008-10-21 10 views
5

WinForms UserControl में, मैं इसे किसी भी नियंत्रण विधियों से .BginginInvoke() को कॉल करके मुख्य जीयूआई थ्रेड पर डेटा पास कर दूंगा। Silverlight UserControl में समतुल्य क्या है?सिल्वरलाइट में, मुख्य डिस्पैच थ्रेड पर ऑपरेशन कैसे करें?

दूसरे शब्दों में, मैं मनमानी कार्यकर्ता थ्रेड द्वारा प्रदान किए गए डेटा को कैसे ले सकता हूं और यह सुनिश्चित कर सकता हूं कि यह मुख्य डिस्प्ले थ्रेड पर संसाधित हो जाए?

उत्तर

6

UserControl क्लास पर डिस्पैचर संपत्ति का उपयोग करें।

private void UpdateStatus() 
{ 
    this.Dispatcher.BeginInvoke(delegate { StatusLabel.Text = "Updated"; }); 
} 
2
private void UpdateStatus() 
    { 
     // check if we not in main thread 
     if(!this.Dispatcher.CheckAccess()) 
     { 
      // call same method in main thread 
      this.Dispatcher.BeginInvoke(UpdateStatus); 
      return; 
     } 

     // in main thread now 
     StatusLabel.Text = "Updated"; 
    } 
संबंधित मुद्दे