关于ui线程异步方法回调函数ui线程阻塞的有关问题

关于ui线程异步方法回调函数ui线程阻塞的问题
先贴代码
C# code
internal Image back = new Image() { Stretch = Stretch.Fill }; //当前场景中的背景

ServiceReference1.WebServiceSoapClient WSC = new SilverlightChart.ServiceReference1.WebServiceSoapClient();

    public MainPage()
        {
            InitializeComponent();

            //this.Width = back.Width = 800;
            //this.Height = back.Height = 500;
            this.Background = new SolidColorBrush(Colors.Transparent);

            Loaded += new RoutedEventHandler(MainPage_Loaded);

            this.LayoutRoot.Children.Add(container);

            Add(back, -1);

        }

        public void CallManage()
        {
        string[] parm =  {"U","I"};
                GetData(parm);
                    
        }

        /// <summary>
        /// Function to create a chart
        /// </summary>
        public void CreateChart(Object obj)
        {
        //解决跨线程访问ui对象?
            this.Dispatcher.BeginInvoke(delegate
            {
            JsonObject json = (JsonObject)obj;
            
            Chart chart = new Chart();
            
            chart.ZoomingEnabled = true;
            chart.ToolBarEnabled = true;
            chart.ScrollingEnabled = false;
            container.Children.Add(chart);
                    Canvas.SetLeft(chart, 5);
                    Canvas.SetTop(chart, 0);
            });
        }

        private void GetData(string[] callStr)
        {
            SilverlightChart.ServiceReference1.ArrayOfString callArray = new SilverlightChart.ServiceReference1.ArrayOfString();
            for (int i = 0; i < callStr.Length; i++)
            {
                callArray.Add(callStr[i]);
            }

            WSC.ChartCompleted += new EventHandler<SilverlightChart.ServiceReference1.ChartCompletedEventArgs>(WSC_ChartCompleted);
            WSC.ChartAsync(callArray);

        }

        //delegate void AsyncCreatChart(JsonObject obj);
        //SynchronizationContext syn;

        private void WSC_ChartCompleted(object sender, SilverlightChart.ServiceReference1.ChartCompletedEventArgs e)
        {   //异步调用完毕
            JsonObject jsonObject = (JsonObject)JsonObject.Parse(e.Result);//e.Result为JSON文本
    //这里调用后silverlight出错,是否还是阻塞ui线程,如何处理?
            ThreadPool.QueueUserWorkItem(new WaitCallback(CreateChart), jsonObject);
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e) 
        { 
            App myapp = (App)App.Current;

            //取得控件
            HtmlElement he = HtmlPage.Document.GetElementById("serach");
            //为控件注册事件
            he.AttachEvent("onclick", (EventHandler)serachHanddle);

            
            //HtmlPage.Window.Invoke("setFrameHeight", this.Height);
        }

        //控件事件
        void serachHanddle(object sender, EventArgs args)
        {
            //取得html输入控件
            //beginDate = HtmlPage.Document.GetElementById("beginDate").GetProperty("Value").ToString();
            
            CallManage();
        }


上面提问注释部分不太清楚如何处理,如何在不阻塞ui线程的情况下在回调函数中创建一个chart控件
也许有其它方式处理,但是我想应该有解决办法

请赐教,谢谢!

------解决方案--------------------
“调用后silverlight出错”就认真地去调试异常问题本身就行了,不要胡乱猜测。

如果这句注释是别人给你写的,那么你上当了。以后看这个人写的代码要小心,它有可能经常乱写注释。