JsonConvert.SerializeObject()抛出InvalidOperationException

时间:2019-05-22 12:37:28

标签: c# json.net

我有一个程序,其中有多个线程共享一个集合。一个线程正在修改列表,另一个线程将列表序列化并将其发送到Web服务。 我不时得到以下异常:

  

System.InvalidOperationException:'集合已被修改;枚举操作可能无法执行。'

在我真正的问题中,列表不包含int而是域模型的实例。 该错误对我来说很明显,但不是补救措施。我编写了一个小程序来重现该问题:

static void Main(string[] args)
{
    // from System.ServiceModel.dll.
    var itemList = new SynchronizedCollection<int>();
    var updateThread = new Thread(() =>
    {
        while (true)
        {
            itemList.Add(itemList.Count);
        }
    });
    var serializeThread = new Thread(() =>
    {
        while (true)
        {
            try
            {
                JsonConvert.SerializeObject(itemList);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
    });

    updateThread.Start();
    serializeThread.Start();

    Console.ReadKey();
}

0 个答案:

没有答案