Ich habe eine StreamSocketListener
in einer Hintergrundaufgabe registriert.Hintergrund StreamSocketListener nur einmal ausgeführt
Wenn eine Anforderung empfangen wird, startet die Methode Run
.
Das erste Mal ist es gut läuft, bekommen das zweite Mal, dass ich diesen Fehler:
O identificador de objeto não representa um objeto válido. (Exception from HRESULT: 0x800710D8)
Der vollständige Code ist:
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
var details = (SocketActivityTriggerDetails)taskInstance.TriggerDetails;
var socketInformation = details.SocketInformation;
try
{
ShowToast(details.Reason.ToString());
if (details.Reason == SocketActivityTriggerReason.ConnectionAccepted &&
socketInformation.SocketKind == SocketActivityKind.StreamSocketListener)
{
using (IOutputStream output = socketInformation.StreamSocket.OutputStream)
{
string str = "Tudo certo\r\n";
var conteudo = $"HTTP/1.1 200 OK\r\nConnection: Close\r\nContent-Length: {str.Length}\r\n\r\n{str}";
using (Stream stream = output.AsStreamForWrite())
{
var bodyArray = Encoding.UTF8.GetBytes(conteudo);
stream.Write(bodyArray, 0, bodyArray.Length);
}
}
}
}
catch (Exception e)
{
ShowToast(e.Message);
StreamSocketListener socket = new StreamSocketListener();
socket.EnableTransferOwnership(taskInstance.Task.TaskId, SocketActivityConnectedStandbyAction.DoNotWake);
await socket.BindServiceNameAsync("8080");
await socket.CancelIOAsync();
socket.TransferOwnership("Teste");
}
deferral.Complete();
}
Die offizielle Probe erzählen nur über StreamSocket, und nicht StreamSoketListener :( –