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) インターフェイスを使用して 1 つのコールバックを発行します。 IAsyncOperation(UssdReply) インターフェイスを使用して非同期操作を取り消すことができます。
SendMessageAndGetReplyAsync の C++ プロジェクションを使用するアプリケーションが、そのコールバック内から UssdSession オブジェクトへの最後の参照を解放すると、SendMessageAndGetReplyAsync がハングする可能性があります。 そのため、アプリケーションでは、SendMessageAndGetReplyAsync 内からコールバックが解放されていないことを確認する必要があります。 これを行う方法の 1 つは、セッション オブジェクトへの参照を渡すことによって、完了コールバックを使用してセッション オブジェクトを解放するコールバック内から別の非同期操作 (タイマーなど) を作成することです。
#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);