我目前正在编写一个托管多个模块的服务器.服务器在单独的AppDomain中运行每个模块.我想要实现的是异常隔离,即当一个模块抛出异常时,我不希望整个进程终止,只是这个特定的AppDomain.我知道,当吞下不同线程中所有未捕获的异常时,我可以告诉CLR回退到旧行为(.NET 1.0).但是,这不是最"优雅"的解决方案.
我有一个构建系统,它包含几个带项目的子目录,每个子目录中都有一个单独的rakiefile(或几个rakefiles).没有顶级目录有一个遍历所有子目录的rakefile并通过:system("rake")调用rake,得到生成的包并将它们发送到适当的机器.这样做有更优雅的方式吗?我已经尝试过Rake.application.load()但是这似乎不接受任何关于必须加载哪个文件的参数(正如我所提到的,有时每个子目录中有2个rakefiles),
.NET中的Socket类公开以下方法:
Socket.BeginSend Method (IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
Run Code Online (Sandbox Code Playgroud)
我有一个BufferManager类,返回ArraySegment<byte>指定的,常量大小为2kB.现在我有一条要发送的消息,假设它是10kB大,所以我可以使用5个预先分配的缓冲区来存储此消息并调用Socket.BeginSend(IList<ArraySegment>>...).这个消息是否会以原子方式发送,就像我刚才使用的那样byte[](即几个并行的BeginSend操作不会混合远程站点上的消息)?
编辑:澄清 - 我正在使用TCP/IP套接字,我的程序同时从几个线程调用BeginSend.假设我们有两个数组段列表:
L1:a1 a2 a3
L2:b1 b2 b3
现在我同时从两个线程调用BeginSend(L1 ...)和BeginSend(L2 ...).我想知道这两个列表是否会在远程端混合,我不会读取类似的内容:a1 b1 b2 a2 b3 a3.