UssdSession.SendMessageAndGetReplyAsync(UssdMessage) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public:
virtual IAsyncOperation<UssdReply ^> ^ SendMessageAndGetReplyAsync(UssdMessage ^ message) = SendMessageAndGetReplyAsync;
IAsyncOperation<UssdReply> SendMessageAndGetReplyAsync(UssdMessage const& message);
public IAsyncOperation<UssdReply> SendMessageAndGetReplyAsync(UssdMessage message);
function sendMessageAndGetReplyAsync(message)
Public Function SendMessageAndGetReplyAsync (message As UssdMessage) As IAsyncOperation(Of UssdReply)
参数
- message
- UssdMessage
要发送到 USSD 会话的消息。
返回
一个异步处理程序,用于检索对已发送消息的 USSD 响应。
Windows 要求
应用功能 |
cellularDeviceControl
cellularDeviceIdentity
|
注解
正在发送的 USSD 消息可以是请求或响应。 该操作是异步操作,并在完成后使用 IAsyncOperation (UssdReply) 接口发出单个回调。 可以使用 IAsyncOperation (UssdReply) 接口取消异步操作。
当使用 SendMessageAndGetReplyAsync 的 C++ 投影的应用程序从该回调中释放对 UssdSession 对象的最后一个引用时,SendMessageAndGetReplyAsync 可能会挂起。 因此,应用程序必须确保不会从 SendMessageAndGetReplyAsync 中释放回调。 执行此操作的一种方法是创建另一个异步操作 (例如,计时器从回调内部) ,其完成回调用于通过向会话对象传递对会话对象的引用来释放会话对象。
#include <winrt/Windows.System.Threading.h>
using namespace winrt;
using namespace Windows::System::Threading;
...
auto timerDelegate = [ussdSession](ThreadPoolTimer const& timer) {};
Windows::Foundation::TimeSpan delay{ std::chrono::seconds(1) };
ThreadPoolTimer timer{ ThreadPoolTimer::CreateTimer(TimerElapsedHandler(timerDelegate), delay) };
auto timerDelegate = [ussdSession](Windows::System::Threading::ThreadPoolTimer^ timer) {};
Windows::Foundation::TimeSpan delay;
delay.Duration = 1; // non-zero value
Windows::System::Threading::ThreadPoolTimer^ timer =
Windows::System::Threading::ThreadPoolTimer::CreateTimer(ref new
Windows::System::Threading::TimerElapsedHandler(timerDelegate), delay);