Example #1
0
    public static T[] getJsonArray <T>(string json)
    {
        string       newJson = "{ \"array\": " + json + "}";
        WrapperA <T> wrapper = JsonUtility.FromJson <WrapperA <T> > (newJson);

        return(wrapper.array);
    }
        public static T[] getJsonArray <T>(string JSONString)
        {
            string       newJsonStringA = "{\"array\": " + JSONString + "}";
            WrapperA <T> wrapperA       = JsonUtility.FromJson <WrapperA <T> >(newJsonStringA);

            return(wrapperA.array);
        }
    public static void Main(string[] args)
    {
        SynchronizationCriticalClass rootClass = new SynchronizationCriticalClass();
        WrapperA wrapperA = new WrapperA(rootClass);
        WrapperB wrapperB = new WrapperB(rootClass);
        // Do some async work with them to test synchronization.
        //Works good.
        DoSomethingAsyncDelegate work = new DoSomethingAsyncDelegate(DoSomethingAsyncCorrectly);

        work.BeginInvoke(wrapperA, null, null);
        work.BeginInvoke(wrapperB, null, null);
        // Works wrong.
        work = new DoSomethingAsyncDelegate(DoSomethingAsyncIncorrectly);
        work.BeginInvoke(wrapperA, null, null);
        work.BeginInvoke(wrapperB, null, null);
    }