我正在使用 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);
}

此时 DatanullBuffer.BlockCopy 抛出 ArgumentNullException
尝试通过调用 InitPoolInitGC 来初始化它。

关于c# - System.ArgumentNullException 与 NetMQ.Msg.Put(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36174377/

10-10 14:35