本文整理汇总了C#中Windows.Networking.Sockets.DatagramSocket.EnableTransferOwnership方法的典型用法代码示例。如果您正苦于以下问题:C# DatagramSocket.EnableTransferOwnership方法的具体用法?C# DatagramSocket.EnableTransferOwnership怎么用?C# DatagramSocket.EnableTransferOwnership使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Windows.Networking.Sockets.DatagramSocket
的用法示例。
在下文中一共展示了DatagramSocket.EnableTransferOwnership方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
public async void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
try
{
var details = taskInstance.TriggerDetails as SocketActivityTriggerDetails;
var socketInformation = details.SocketInformation;
switch (details.Reason)
{
case SocketActivityTriggerReason.SocketActivity:
var socket = socketInformation.DatagramSocket;
//DataReader reader = new DataReader(socket.InputStream);
//reader.InputStreamOptions = InputStreamOptions.Partial;
//await reader.LoadAsync(250);
//var dataString = reader.ReadString(reader.UnconsumedBufferLength);
////ShowToast(dataString);
//socket.TransferOwnership(socketInformation.Id);
break;
case SocketActivityTriggerReason.KeepAliveTimerExpired:
socket = socketInformation.DatagramSocket;
//DataWriter writer = new DataWriter(socket.OutputStream);
//writer.WriteBytes(Encoding.UTF8.GetBytes("Keep alive"));
//await writer.StoreAsync();
//writer.DetachStream();
//writer.Dispose();
//socket.TransferOwnership(socketInformation.Id);
break;
case SocketActivityTriggerReason.SocketClosed:
socket = new DatagramSocket();
socket.EnableTransferOwnership(taskInstance.Task.TaskId, SocketActivityConnectedStandbyAction.Wake);
//if (ApplicationData.Current.LocalSettings.Values["hostname"] == null)
//{
// break;
//}
//var hostname = (String) ApplicationData.Current.LocalSettings.Values["hostname"];
//var port = (String) ApplicationData.Current.LocalSettings.Values["port"];
//await socket.ConnectAsync(new HostName(hostname), port);
socket.TransferOwnership(socketId);
break;
default:
break;
}
deferral.Complete();
}
catch (Exception ex)
{
//ShowToast(ex.Message);
deferral.Complete();
}
}
示例2: CheckSocketAsync
private async Task CheckSocketAsync()
{
try
{
SocketActivityInformation socketInformation;
if (!SocketActivityInformation.AllSockets.TryGetValue(socketId, out socketInformation))
{
var socket = new DatagramSocket();
socket.Control.DontFragment = true;
socket.Control.MulticastOnly = true;
socket.EnableTransferOwnership(task.TaskId, SocketActivityConnectedStandbyAction.Wake);
await socket.BindServiceNameAsync(localService);
socket.JoinMulticastGroup(new HostName(remoteMulticastAddress));
// To demonstrate usage of CancelIOAsync async, have a pending read on the socket and call
// cancel before transfering the socket.
//DataReader reader = new DataReader(socket.InputStream);
//reader.InputStreamOptions = InputStreamOptions.Partial;
//var read = reader.LoadAsync(250);
//read.Completed += (info, status) =>
//{
//};
//await socket.CancelIOAsync();
socket.TransferOwnership(socketId);
socket = null;
}
//rootPage.NotifyUser("Connected. You may close the application", NotifyType.StatusMessage);
}
catch (Exception exception)
{
//rootPage.NotifyUser(exception.Message, NotifyType.ErrorMessage);
}
}