/// <summary> /// Set a key-value and add a callback /// </summary> public void SetAndAddCallback(string key, object value, OnChangeHandler callback, CallNow callNow, RunOnMainThead runOnMainThread = RunOnMainThead.NO, WaitUntilDone waitUntilDone = WaitUntilDone.NO) { Set(key, value); AddCallback(key, callback, runOnMainThread, waitUntilDone); if (callNow == CallNow.YES) { Invoke(key); } }
/// <summary> /// Add a callback to a key /// </summary> public void AddCallback(string key, OnChangeHandler callback, RunOnMainThead runOnMainThread = RunOnMainThead.NO, WaitUntilDone waitUntilDone = WaitUntilDone.NO) { if (Contains(key) == false) { Configs[key] = null; } Delegate del = runOnMainThread == RunOnMainThead.YES ? (dynamic v) => Utilities.InvokeMain(() => callback(v), waitUntilDone == WaitUntilDone.YES ? true : false) : callback; if (Events.ContainsKey(key)) { Events[key] = Delegate.Combine(Events[key], del); } else { Events[key] = del; } }
/// <summary> /// Set a key-value and add a callback /// </summary> public void SetAndAddCallback(string key, object value, OnChangeHandler callback, RunOnMainThead runOnMainThread = RunOnMainThead.NO, WaitUntilDone waitUntilDone = WaitUntilDone.NO) { SetAndAddCallback(key, value, callback, CallNow.NO, runOnMainThread, waitUntilDone); }