我有来自的TCP客户端
System.Net.Sockets
public async void startTCP()
{
await client.ConnectAsync(IPAddress, port);
stream = client.GetStream();
}
我用 try catch
块包围它但是当我运行代码并且引发了这个异常并且VS显示我在
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached)
global::System.Diagnostics.Debugger.Break();
};
在 App.g.i.cs
不是我想要的地方=>自己处理异常
System.Net.Internals.SocketExceptionFactory ExtendedSocketException:请求的地址在System.SNet.Sockets.TcpClient.EndConnect(IAsyncResult)的System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)的上下文255.255.255.255:25565中无效 . asyncResult)在System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic的System.Net.Sockets.TcpClient . <> c.b__21_1(IAsyncResult asyncResult)中(IAsyncResult iar,Func2 endFunction,Action1 endAction,Task1 promise,Boolean requiresSynchronization)---结束来自抛出异常的先前位置的堆栈跟踪---在System.Runtime.CompilerServices.TaskAwaiter的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处 . PersonDesk.Socket.d__10.MoveNext()中的GetResult()---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.AsyncMethodBuilderCore . <> c.b_ System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()}中的_6_0(对象状态)
IP地址只是占位符,用于引发异常
1 回答
是
async void
. 你不应该这样做 . 因为这是对
async void
不起作用的一件事 .要获得完整的答案,您必须说明如何调用startTCP() . 涉及完整的调用链 .
它似乎与WPF有关,所以从事件处理程序开始(可以是异步void) .