error uploading file to parse with unity 5.1.1f1

I am using Parse for a game that I’m developing. Everything is ok until I try to uplad a file, no matters his extension I always get this Error : “get_version can only be called from main thread”!

byte[] data = System.Text.Encoding.UTF8.GetBytes("Working at Parse is great!");
            ParseFile file = new ParseFile("resume.txt", data);
            Task saveTask = file.SaveAsync();
            var player = new ParseObject ("FilesLibrary");
            player ["Number"] = 155;
            player ["Files"] = file;
            saveTask = player.SaveAsync();

I have tried to place this script in different places :
{ Main, Start, Update, Awake, Button’s OnClick event, Couroutine, Queue … }
But I always get the same problem.

And the most weird thing is that the same script works fine with unity 4.6 but not 5.1 !

You need to save the file to Parse first, before you can save it to the Player object… here is some code on how to do this…

// The file first needs to be uploaded to Parse before it can be saved to the object in the database
	ParseFile _playerFile;

	public void CreatePlayer()
	{
		StartCoroutine (UploadPlayerFile ((response) => {
			if(response == 1)
				StartCoroutine(CreateProjectAsync());						
			else
				Debug.LogError("The file could not be uploaded");
		}));
	}		

	IEnumerator UploadPlayerFile(Action <int> callback)
	{
		var fileBytes = System.IO.File.ReadAllBytes (@"C:\myfile.jpg");
		_playerFile = new ParseFile ("file.jpg",  fileBytes, "image/jpeg");

		var saveTask = _playerFile.SaveAsync ();

		while (!saveTask.IsCompleted)
			yield return null;		

		if (saveTask.IsFaulted) {
			Debug.LogError ("An error occurred while uploading the player file : " + saveTask.Exception.Message);
			callback (-1);
		} else {			
			callback (1);
		}	
	}

	IEnumerator CreateProjectAsync()
	{		
		ParseObject player = new ParseObject ("Player");
		player ["Number"] = 111;
		player ["Files"] = _playerFile;

		var saveTask = player.SaveAsync ();

		while (!saveTask.IsCompleted)
			yield return null;		

		if (saveTask.IsFaulted) {
			Debug.LogError ("An error occurred while creating the player object : " + saveTask.Exception.Message);

		} else {	
			Debug.Log ("Player created successfully");
		}	
	}