【发布时间】:2017-07-12 17:08:17
【问题描述】:
我正在使用 .NET 4.5.1 运行 C# 控制台应用程序。当我运行以下函数时,下面的 udpClient.ReceiveAsync() 调用会无声无息地终止程序。我该如何调试?
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);
}
}
【问题讨论】:
-
什么叫
Run,为什么是async void而不是async Task?这是无法追踪的主要来源。
标签: c# async-await udpclient