System.ArgumentNullException 与 NetMQ.Msg.Put()
System.ArgumentNullException with NetMQ.Msg.Put()
我正在使用 NetMQ 进行进程间数据通信。
我在 .Net 4.5
上使用 NuGet 包版本 3.3.2.2
我想从一个字符串创建一个简单的消息并通过 RequestSocket
.
发送它
我不断得到 System.ArgumentNullException
尽管在任何时候都没有实例为空。
我的自包含代码:
static void Main(string[] args)
{
string exampleString = "hello, world";
byte[] bytes = new byte[exampleString.Length * sizeof(char)];
if (bytes == null)
{
return;
}
System.Buffer.BlockCopy(exampleString.ToCharArray(), 0, bytes, 0, bytes.Length);
var clientMessage = new NetMQ.Msg();
clientMessage.InitEmpty();
if (!clientMessage.IsInitialised)
{
return;
}
clientMessage.Put(bytes, 0, bytes.Length); //throws exception!
}
当您调用 Put
时,它会调用 Buffer.BlockCopy(src, 0, Data, i, len);
来自github
public void Put([CanBeNull] byte[] src, int i, int len)
{
if (len == 0 || src == null)
return;
Buffer.BlockCopy(src, 0, Data, i, len);
}
在这一点上 Data
是 null
,而 Buffer.BlockCopy 抛出 ArgumentNullException
尝试通过调用 InitPool
或 InitGC
来初始化它。
我正在使用 NetMQ 进行进程间数据通信。
我在 .Net 4.5
上使用 NuGet 包版本 3.3.2.2
我想从一个字符串创建一个简单的消息并通过 RequestSocket
.
我不断得到 System.ArgumentNullException
尽管在任何时候都没有实例为空。
我的自包含代码:
static void Main(string[] args)
{
string exampleString = "hello, world";
byte[] bytes = new byte[exampleString.Length * sizeof(char)];
if (bytes == null)
{
return;
}
System.Buffer.BlockCopy(exampleString.ToCharArray(), 0, bytes, 0, bytes.Length);
var clientMessage = new NetMQ.Msg();
clientMessage.InitEmpty();
if (!clientMessage.IsInitialised)
{
return;
}
clientMessage.Put(bytes, 0, bytes.Length); //throws exception!
}
当您调用 Put
时,它会调用 Buffer.BlockCopy(src, 0, Data, i, len);
来自github
public void Put([CanBeNull] byte[] src, int i, int len)
{
if (len == 0 || src == null)
return;
Buffer.BlockCopy(src, 0, Data, i, len);
}
在这一点上 Data
是 null
,而 Buffer.BlockCopy 抛出 ArgumentNullException
尝试通过调用 InitPool
或 InitGC
来初始化它。