private static Dictionary <int, QueueInvoke> mQueueInvoke = new Dictionary <int, QueueInvoke>(); // all instances created at while life time private static QueueInvoke GetInstance(string callerFileName, int callerLineNumber) { lock (mQueueInvoke) { QueueInvoke value; if (!mQueueInvoke.TryGetValue(CalculateHashCode(callerFileName, callerLineNumber), out value)) { value = new QueueInvoke(callerFileName, callerLineNumber); } return(value); } }
/// <summary> /// Invoke call, perform handler in the main GUI thread, comparable to Gtk.Application.Invoke, but only last invoke in queue will be executed /// </summary> /// <param name="handler"></param> public static void Invoke(EventHandler handler, [CallerFilePathAttribute] string callerFileName = "", [CallerLineNumberAttribute] int callerLineNumber = 0) { var instance = QueueInvoke.GetInstance(callerFileName, callerLineNumber); instance.Invoke(handler); }
private static QueueInvoke GetInstance(string callerFileName, int callerLineNumber) { lock (mQueueInvoke) { QueueInvoke value; if (!mQueueInvoke.TryGetValue(CalculateHashCode(callerFileName, callerLineNumber), out value)) value = new QueueInvoke(callerFileName, callerLineNumber); return value; } }