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: The requested address is not valid in its context 255.255.255.255:25565 at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.TcpClient.EndConnect(IAsyncResult asyncResult) at System.Net.Sockets.TcpClient.<>c.b__21_1(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter.GetResult() at PersonDesk.Socket.d__10.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state) at System.Threading.WinRTSynchronizationContext.Invoker.InvokeCore()}
IP-адрес - это просто заполнитель для возникновения исключения.
Находится ли try-catch внутри метода startTCP или там, где вы его называете? async void означает, что startTCP запущен и забыт, поэтому вы не сможете обрабатывать исключения вне метода.
Возможный дубликат async / await - когда вернуть задачу против void?
используйте «public async Task StartTcpAsync ()» вместо «public async void startTCP ()»
Пробная ловушка находится за пределами StartTCP, как я ее называю.





public async void startTCP()
это async void. Вы не должны этого делать. Так как
I surround it with try catch block
и это единственное, что не работает с async void.
Для полного ответа вам нужно будет показать, как вызывается startTCP (). Задействована вся цепочка вызовов.
Кажется, это касается WPF, поэтому начните с обработчика событий (чтобы может был async void).
Итак, если я изменю его тип на Task, тогда я смогу перехватить исключения, вызванные асинхронной операцией в вызывающем методе?
Также это не wpf, а Uwp.
Спасибо за помощь, я этого не знал. Теперь работает.
где попробовать ... улов ??