UssdSession.SendMessageAndGetReplyAsync(UssdMessage) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet eine Nachricht an eine USSD-Sitzung und gibt einen Handler zurück, um die Antwort asynchron abzurufen.
Hinweis
Diese Funktionalität ist nur für Apps von Mobilfunkanbietern und UWP-Apps verfügbar, die privilegierten Zugriff von Mobilfunknetzbetreibern erhalten.
Wenn Sie diese API verwenden und Ihre App im Microsoft Store veröffentlichen möchten, benötigen Sie eine spezielle Genehmigung. Weitere Informationen finden Sie im Abschnitt Eingeschränkte Funktionen im Thema App-Funktionsdeklarationen .
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)
Parameter
- message
- UssdMessage
Die Nachricht, die an die USSD-Sitzung gesendet werden soll.
Gibt zurück
Ein asynchroner Handler zum Abrufen der USSD-Antwort auf die gesendete Nachricht.
Windows-Anforderungen
App-Funktionen |
cellularDeviceControl
cellularDeviceIdentity
|
Hinweise
Die gesendete USSD-Nachricht kann entweder eine Anforderung oder eine Antwort sein. Der Vorgang ist asynchron und gibt nach Abschluss einen einzelnen Rückruf über die IAsyncOperation(UssdReply) -Schnittstelle aus. Sie können den asynchronen Vorgang mithilfe der IAsyncOperation(UssdReply) -Schnittstelle abbrechen.
Wenn eine Anwendung, die die C++-Projektion von SendMessageAndGetReplyAsync verwendet, ihren letzten Verweis auf das UssdSession-Objekt in diesem Rückruf freigibt, kann SendMessageAndGetReplyAsync hängen bleiben. Daher müssen Anwendungen sicherstellen, dass der Rückruf nicht in SendMessageAndGetReplyAsync freigegeben wird. Eine Möglichkeit besteht darin, einen weiteren asynchronen Vorgang (z. B. einen Timer) innerhalb des Rückrufs zu erstellen, dessen Abschlussrückruf zum Freigeben des Sitzungsobjekts verwendet wird, indem ein Verweis auf das Sitzungsobjekt übergeben wird.
#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);