小编Dan*_*iel的帖子

事件处理程序不是线程安全吗?

所以我已经阅读过,而不是直接调用事件

if (SomeEvent != null)
   SomeEvent(this, null);
Run Code Online (Sandbox Code Playgroud)

我应该这样做

SomeEventHandler temp = SomeEvent;
if (temp != null)
    temp(this, null);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?第二个版本如何变得线程安全?什么是最佳做法?

.net c# events multithreading thread-safety

29
推荐指数
3
解决办法
1万
查看次数

从套接字接收数据的C#性能方法?

假设我们有一个简单的互联网套接字,它将发送随机数据的10兆字节(因为我想忽略内存问题).是否应该使用任何性能差异或最佳实践方法来接收数据?最终输出数据应由byte []表示.是的我知道向内存写入任意数量的数据是不好的,如果我下载一个大文件,我就不会这样做了.但是出于论证的缘故,让我们忽略它,并假设它是一个少量的数据.我也意识到这里的瓶颈可能不是内存管理而是套接字接收.我只是想知道什么是最有效的接收数据的方法.

一些狡猾的方式可以想到的是:

  1. 有一个List和一个缓冲区,在缓冲区已满后,将它添加到列表和结尾list.ToArray()以获取byte []

  2. 在完成构造stream.Length的byte []之后将缓冲区写入内存流,并将其全部读入其中以获取byte []输出.

有没有更有效/更好的方法来做到这一点?

c# sockets performance

5
推荐指数
1
解决办法
2372
查看次数

顶级域名的 Whois 列表及其对应的注册商

例如,我正在尝试查找相应 whois 服务器的 TLD 列表

.com americanWhoisServer .net someOtherWhoisServer .au australianWhoisServer

最后,我的目标是类似字典的东西,其中键是 TLD,值是 whois 服务器地址(例如 whois.apnic.net)。

啊,天哪,我刚刚意识到我得到的是 IP 地址而不是域名,但列表仍然可以派上用场。

如何确定给定 IP 地址要使用哪个 whois 服务器?猜测并检查?

whois tld

4
推荐指数
1
解决办法
4738
查看次数

标签 统计

c# ×2

.net ×1

events ×1

multithreading ×1

performance ×1

sockets ×1

thread-safety ×1

tld ×1

whois ×1