Перехват асинхронной операции исключение не работает - PullRequest
0 голосов
/ 24 мая 2018

У меня 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: запрошенный адреснедопустимо в его контексте 255.255.255.255:25565 в System.Net.Sockets.Socket.EndConnect (IAsyncResult asyncResult) в System.Net.Sockets.TcpClient.EndConnect (IAsyncResult asyncResult) в System.Net.Sockli.Tp.>c.b__21_1 (IAsyncResult asyncResult) в System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic (IAsyncResult iar, Func2 endFunction, Action1 endAction, обещание Task1, логическое значение требуетSynchronization) --- конец конца стека из предыдущего местоположения, где исключение конца стека от предыдущего расположенияв System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) в System.Runtime.CompilerServices.TaskAwaiter.GetResult () в PersonDesk.Socket.d__10.MoveNext () --- Конец трассировки стека из предыдущего местоположения, в котором было сгенерировано исключение --- в System.Runtime.CompilerServices.AsyncMethodBuilderCore. <> C.b__6_0 (состояние объекта) в System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore ()}

IP-адрес является просто заполнителем для возбудимого исключения

1 Ответ

0 голосов
/ 24 мая 2018
public async void startTCP()

является async void.Ты не должен этого делать.Потому что

Я окружаю его блоком try catch

, и это единственное, что не работает для async void.


Для полного ответа вам нужно будет показать, как вызывается startTCP ().Полная цепочка вызовов участвует.

Это похоже на WPF, поэтому начните с обработчика событий (что может быть асинхронной пустотой).

...