我正在使用NetMQ进行进程间数据通信.
我在.Net 4.5上使用NuGet软件包版本3.3.2.2
我想从字符串创建一个简单的消息,并通过RequestSocket发送它.
我一直得到System.ArgumentNullException,尽管实例中的非实例在任何点都是null.
我自己的代码:
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 it调用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来初始化它.