如何避免为每次调用WCF操作方法创建新的字节数组
本文关键字:创建 字节 数组 字节数 操作方法 WCF 何避免 调用 | 更新日期: 2023-09-27 17:49:36
是否有一种方法可以避免创建具有固定长度的新字节数组实例并从较大的字节数组Buffer
调用Array.Copy
到新创建的应答数组reply
?
- 更改WCF主机的API !?
- 使用to-me-unbeknow方法创建一个指向另一个数组的看起来&行为视图?
还有其他想法吗?
// Buffer : byte[]
// host : a WCF host
while (code >= 0)
{
try
{
if (Socket.Available == 0)
{
Thread.Sleep(Wait);
continue;
}
var length = Socket.Receive(Buffer);
if (length > 0)
{
Log("Read", ServerPort, " ->", Client, length);
var reply = new byte[length];
Array.Copy(Buffer, reply, length);
try { code = host.Reply(ServerPort, Client, reply); }
catch (Exception ex)
{
code = -2;
Log("Exception", ServerPort, "<=>", Client, ex);
ConnectToHost();
}
}
}
catch (Exception ex)
{
code = -3;
Delist();
if (ex.GetType() != typeof(ThreadAbortException))
Log("Exception", ServerPort, "!!!", Client, ex);
Log("Disconnect", ServerPort, @"<'>", Client, Relay.Host.Address());
Tcp.Close();
}
你可以使用ArraySegment
但是,使用WCF提供的BufferManager类来管理代码中的可重用缓冲区似乎也会受益。