如何在c#中访问UI线程

本文关键字:访问 UI 线程 | 更新日期: 2023-09-27 18:05:14

我正在尝试访问windows phone 8的c# UI线程。到目前为止,我得到了这个。然而,一旦运行SmartDispatcher,它就会跳转到receipt == null

我得到了SmartDispatcher类从这个网站(http://www.jeff.wilcox.name/2010/04/propertychangedbase-crossthread/)。我想知道其他人是否有这个问题以及如何解决它。

private async void purchaseProduct()
        {       
            try{
                li = await Store.CurrentApp.LoadListingInformationAsync();
                SmartDispatcher.BeginInvoke(async delegate()
                {
                    receipt = await Store.CurrentApp.RequestProductPurchaseAsync(package_id, true);
                });
            }    
            catch 
            { 
                DispatchCommandResult(new PluginResult(PluginResult.Status.ERROR)); 
            }
            finally
            {
                if(receipt != null)
                {
                    parseXML(package_id);
                    prepData();
                    httpPostData();
                    Store.CurrentApp.ReportProductFulfillment(package_id);
                }
            }
        }

如何在c#中访问UI线程

当然,它会立即跳转到那里,因为您正在开始一个异步操作,它不会阻塞,而是立即返回。
看,如果对象包含方法Invoke而不是BeginInvokeInvoke将阻塞,直到操作完成。