我正在使用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!
}
答案 0 :(得分:2)
当您致电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
来初始化它。