首页 文章

捕获异步操作异常无效

提问于
浏览
0

我有来自的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 回答

  • 2
    public async void startTCP()
    

    async void . 你不应该这样做 . 因为

    我用try catch块包围它

    这是对 async void 不起作用的一件事 .


    要获得完整的答案,您必须说明如何调用startTCP() . 涉及完整的调用链 .

    它似乎与WPF有关,所以从事件处理程序开始(可以是异步void) .

相关问题