我在开发一个D3D游戏应用,当我在添加内支付时遇到一些问题:
这是我的代码:
void PayTest::purchaseAppTest()
{
try
{
Platform::String^ pProductIdString("pay_id0");
auto operation = Store::CurrentApp::RequestProductPurchaseAsync( pProductIdString, true);
auto requestPurchaseTask = Concurrency::create_task(operation);
requestPurchaseTask.then([pProductIdString] (...)
{
//do something
}).then([this]
{
//do something
});
}catch(Platform::Exception^ e)
{
}
}
1.是在主线程调用的支付代码
2.第一次支付是正常的,并能收到正确返回,再次支付则会崩溃
3.在支付界面点击取消会立即崩溃
点击返回按钮的崩溃调用堆栈如下:
Msvcr110.dll!Concurrency::details::_ReportUnobservedException() Line 2455 C++
PayTest.exe!Concurrency::details::_ExceptionHolder::~_ExceptionHolder() Line 884 C++
PayTest.exe!Concurrency::details::_Task_impl_base::~_Task_impl_base() Line 1294 C++
PayTest.exe!Concurrency::details::_Task_impl<Platform::String ^>::~_Task_impl<Platform::String ^>() Line 1972 C++
PayTest.exe!Concurrency::details::_Task_impl<Platform::String ^>::`scalar deleting destructor'(unsigned int) C++
PayTest.exe!<lambda_c7a9e552b9c6d97321344c83d1769008>::operator()(Windows::Foundation::IAsyncOperation<Platform::String ^> ^ _Operation, Windows::Foundation::AsyncStatus _Status) Line 1863 C++
PayTest.exe!?__abi_Windows_Foundation_?$AsyncOperationCompletedHandler@P$AAVString@Platform@@___abi_IDelegate____abi_Invoke@?Q__abi_IDelegate@?$AsyncOperationCompletedHandler@P$AAVString@Platform@@@Foundation@Windows@@234@U$AAAJP$AAU?$IAsyncOperation@P$AAVString@Platform@@@34@W4AsyncStatus@34@@Z(Windows::Foundation::IAsyncOperation<Platform::String ^> ^ __param0, Windows::Foundation::AsyncStatus __param1) C++
Windows.ApplicationModel.Store.dll!6a3c8c02() Unknown
Windows.ApplicationModel.Store.dll!6a3cf12e() Unknown
似乎是因为create_task引起的.
这里还有另一个帖子和我描述的问题一样,但都没有找到好的方法去解决:
http://social.msdn.microsoft.com/Forums/wpapps/en-us/6efb19e6-579d-4bb4-9e7b-d7e394f1ae45/crash-when-inovde-currentapprequestproductpurchaseasync?forum=wpdevelop
所有都做完了,就差这个了!谁能帮我一把?万分感谢!