1

我正在尝试访问 Windows phone 8 的 C# 中的 UI 线程。到目前为止,我得到了这个。但是,一旦它运行SmartDispatcher,它就会跳转到 finally receipt == null

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

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);
                }
            }
        }
4

1 回答 1

3

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

请参阅线程作为参考。

于 2013-03-22T15:21:43.017 回答