public async void multiSet(string[][] keyValueArray, ICallback callback) { if (keyValueArray == null || keyValueArray.Length == 0) { callback.Invoke(AsyncStorageErrorHelpers.GetInvalidKeyError(null)); return; } var error = default(JObject); await _mutex.WaitAsync().ConfigureAwait(false); try { foreach (var pair in keyValueArray) { if (pair.Length != 2) { error = AsyncStorageErrorHelpers.GetInvalidValueError(null); break; } if (pair[0] == null) { error = AsyncStorageErrorHelpers.GetInvalidKeyError(null); break; } if (pair[1] == null) { error = AsyncStorageErrorHelpers.GetInvalidValueError(pair[0]); break; } error = await SetAsync(pair[0], pair[1]).ConfigureAwait(false); if (error != null) { break; } } } finally { _mutex.Release(); } if (error != null) { callback.Invoke(error); } else { callback.Invoke(); } }
public async void multiSet(string[][] keyValueArray, ICallback callback) { if (keyValueArray == null || keyValueArray.Length == 0) { callback.Invoke(AsyncStorageErrorHelpers.GetInvalidKeyError(null)); return; } var error = default(JObject); await Task.Run(() => { lock (_gate) { foreach (var pair in keyValueArray) { if (pair.Length != 2) { error = AsyncStorageErrorHelpers.GetInvalidValueError(null); break; } if (pair[0] == null) { error = AsyncStorageErrorHelpers.GetInvalidKeyError(null); break; } if (pair[1] == null) { error = AsyncStorageErrorHelpers.GetInvalidValueError(pair[0]); break; } error = Set(pair[0], pair[1]); if (error != null) { break; } } } }); if (error != null) { callback.Invoke(error); } else { callback.Invoke(); } }