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