asynchronous - BeginGetHostAddresses 异步回调是否在另一个线程中调用而不是初始
问题描述
我的任务是解析巨大的文件日志,所以性能很重要。对于每个日志行:我正在调用Dns.GetHostAddresses
以通过主机名获取 IP 地址并将其设置为我的模型的字段之一。
result.Ip = Dns.GetHostAddresses(result.Host)[0].MapToIPv6().ToString();
// Other code and save result to data base
并将结果模型保存到数据库后记。
有时会GetHostAddresses
抛出"No such host is known"
异常,因此最简单的方法是将其放入try{}catch{}
块中。但据我所知 - 这个块会降低性能。所以我发现也有Dns.BeginGetHostAddresses
方法。result
所以我尝试使用它并测试在模型保存到数据库之前是否没有调用异步回调:
Dns.BeginGetHostAddresses(result.Host, (x) =>
{
try
{
// Thread.Sleep(10000);
IPAddress[] addresses = Dns.EndGetHostAddresses(x);
// Thread.Sleep(10000);
IPAddress address = addresses[0];
result.Ip = address?.MapToIPv6().ToString();
}
catch { }
}, null);
// Other code and save result to data base
我看到这种方式的性能比Dns.GetHostAddresses
使用时要高得多。使用调试器我看到回调总是在进入下一行代码之前完成。但仍然不确定这是调试的副作用还是真实状态。
我的问题是:
在async callback
另一个线程中调用并且可能存在我的模型 -在设置result
字段之前保存到数据库的情况Ip
?
解决方案
推荐阅读
- python-3.x - 为什么我的节点标签在使用 python-Louvain 时不显示?
- javascript - 选择并上传多张照片客户端
- vue.js -
自动呼叫。如何防止在不点击的情况下调用默认值? - javascript - 如何让我的 React 组件在退出 HTML 时呈现
- flutter - 运行flutter应用程序时出现podfile错误
- database - 在 Flutter 中调用“等待数据库”后对象的属性发生变化?
- python - python中的异常处理计算字符串中的字符数
- python - while循环检查字符用户提示继续,直到输入字符python
- r - 将字符串“12/27/2020 00:00:00”转换为日期?
- acl - haproxy acl 根据取自 PROXY protocl v2 标头的客户端 IP 过滤 tcp 请求