System.Windows.Forms.XplatUICarbon.PeekMessage C# (CSharp) Method

PeekMessage() private method

private PeekMessage ( Object queue_id, System.Windows.Forms.MSG &msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags ) : bool
queue_id Object
msg System.Windows.Forms.MSG
hWnd System.IntPtr
wFilterMin int
wFilterMax int
flags uint
return bool
		internal override bool PeekMessage(Object queue_id, ref MSG msg, IntPtr hWnd, int wFilterMin, int wFilterMax, uint flags) {
			IntPtr evtRef = IntPtr.Zero;
			IntPtr target = GetEventDispatcherTarget();
			CheckTimers (DateTime.UtcNow);
			ReceiveNextEvent (0, IntPtr.Zero, 0, true, ref evtRef);
			if (evtRef != IntPtr.Zero && target != IntPtr.Zero) {
				SendEventToEventTarget (evtRef, target);
				ReleaseEvent (evtRef);
			}
			
			lock (queuelock) {
				if (MessageQueue.Count <= 0) {
					return false;
				} else {
					object queueobj;
					if (flags == (uint)PeekMessageFlags.PM_REMOVE)
						queueobj = MessageQueue.Dequeue ();
					else
						queueobj = MessageQueue.Peek ();

					if (queueobj is GCHandle) {
						XplatUIDriverSupport.ExecuteClientMessage((GCHandle)queueobj);
						return false;
					}
					msg = (MSG)queueobj;
					return true;
				}
			}
		}
XplatUICarbon