Ich verwende eine C# -Konsolenanwendung mit .NET 4.5.1. Wenn ich die folgende Funktion ausführe, beendet der Aufruf von udpClient.ReceiveAsync() das Programm ohne Ausnahme still und ohne Ausnahme. Wie debugge ich das?C# erwarten udpClient.ReceiveAsync() schlägt fehl und beendet das Programm
public async void Run()
{
try
{
var armIpAddress = IPAddress.Parse("239.1.11.1");
using (var udpClient = new UdpClient())
{
udpClient.ExclusiveAddressUse = false;
var ipEndPoint = new IPEndPoint(IPAddress.Any, 12020);
udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
udpClient.ExclusiveAddressUse = false;
udpClient.Client.Bind(ipEndPoint);
udpClient.JoinMulticastGroup(armIpAddress);
while (true)
{
var result = await udpClient.ReceiveAsync();
//...
}
}
catch (Exception x)
{
Console.WriteLine(x.Message);
}
}
Was 'Run' ruft und warum ist das' async void' statt 'async Task'? Das ist die Hauptquelle für Unübertragbarkeit. –